home *** CD-ROM | disk | FTP | other *** search
/ Acorn User: China / Acorn User China CD-ROM (UK) (Disc A) / Acorn User China CD-ROM (UK) (Disc A).bin / DEMON / HAMRADIO / TNC.ARC / !tnc_!RunImage (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1994-08-20  |  68.3 KB  |  3,533 lines

  1.  ><tnc>!RunImage
  2.  Another amazing program by Garry Orford, G4FRO
  3.  Copyright Garry Orford, G4FRO 1989-1994
  4.  Real men use WIMPs without line numbers !
  5. /version$="2.20" +
  6. (223)+" (20 August 1994)"
  7.  version$="2.12 (28 March 1993)"
  8. error:
  9. numlines%=1000
  10. indsize%=5408+3*1096
  11.  baud$(8)
  12.  block% 2000
  13.  block2% 20
  14.  call$(24)
  15.  ctexts$(24)
  16.  cwspeed$(10)
  17.  databuff% 1024
  18.  fkey$(4,11)
  19. fkey$=""
  20.  host% 4000
  21.  iconaction% 28
  22.  iconcolour% 35
  23.  iconsp% 12
  24.  icontext$(12)
  25.  ind% indsize%
  26.  length% 12
  27.  line$(numlines%)
  28. line$=("")
  29.  list% 28
  30.  mb1% &200
  31.  mb2% &100
  32.  mb3% &100
  33.  mb4% &100
  34.  mb5% &100
  35.  mb6% &100
  36.  mb7% &100
  37.  name% 8
  38.  pac% 80
  39.  q% &500
  40.  r% &500
  41.  shift$(4)
  42.  speed$(9)
  43.  "OS_FSControl",28,"<tnc$DIR>.WimpKeys.*" 
  44.  ,,,numwkeys%
  45.  wimpkeydef$(numwkeys%,9)
  46.  wimpkeyicon$(numwkeys%,9)
  47.  word$(6)
  48.  workarea% 256
  49.  yappdata% 256
  50.  yappname% 24
  51. amtor%=
  52. amtorshift%=1
  53. append%=
  54. baud$(3)="300"
  55. baud$(4)="1200"
  56. baud$(5)="2400"
  57. baud$(6)="4800"
  58. baud$(7)="9600"
  59. baud$(8)="19200"
  60. bauddef$="2400"
  61. baud%=5
  62. botline%=3
  63. btext$=""
  64. callsign$=""
  65. caret%=
  66. caretpos%=0
  67. char%=0
  68. F    ci%=0
  69. G    cc%=0
  70. charout%=0
  71. chat%=
  72. clock%=
  73. close%=
  74. code%=0
  75. ctextstick%=0
  76. ctrlz%=
  77. O    cw%=
  78. cwspeed%=5
  79. cwspeed$(1)="5"
  80. cwspeed$(2)="10"
  81. cwspeed$(3)="15"
  82. cwspeed$(4)="20"
  83. cwspeed$(5)="25"
  84. cwspeed$(6)="30"
  85. cwspeed$(7)="35"
  86. cwspeed$(8)="40"
  87. cwspeed$(9)="45"
  88. cwspeed$(0)="50"
  89. data%=
  90. datapointer%=0
  91. dateformat$=""
  92. deffile$=""
  93. defgrab$=""
  94.  "OS_ReadMonotonicTime" 
  95.  delay%
  96. errwindow%=
  97. filter%=
  98. first%=
  99. fkeys%=
  100. grab%=
  101. grabfile$=""
  102. headerlen%=0
  103. icontxt$=""
  104. indend%=ind%+indsize%
  105. kamcc%=0
  106. kamci%=0
  107. length%=0
  108. line%=0
  109. longpath%=
  110. o'mask%=(1<<4)+(1<<5)+(1<<11)+(1<<12)
  111. maxpac%=72
  112. memack%=
  113. menu%=1
  114. modes%=
  115. name$=""
  116. newcaretpos%=0
  117. pac$=""
  118. packet%=
  119. pactor%=
  120. partpac%=0
  121. quit%=
  122. reason$=""
  123. rtty%=
  124. rxbotline%=5
  125. rxline%=5
  126. scrolly%=0
  127. scrolled%=
  128. sentcr%=delay%
  129. shaded%=1<<22
  130. shift$(1)="170"
  131. shift$(2)="425"
  132. shift$(3)="850"
  133. shift$(4)="M"
  134. shift%=1
  135. sline%=0
  136. speed$(1)="45"
  137. speed$(2)="50"
  138. speed$(3)="57"
  139. speed$(4)="75"
  140. speed$(5)="100"
  141. speed$(6)="110"
  142. speed$(7)="150"
  143. speed$(8)="200"
  144. speed$(9)="300"
  145. speed%=1
  146. spool%=
  147. spoolfile$=""
  148. spooltick%=0
  149. state$="R"
  150. testctext%=delay%
  151. timeformat$=""
  152. type$=""
  153. upload%=
  154. wkeyset%=1
  155. word$(0)="7E2"
  156. word$(1)="7O2"
  157. word$(2)="7E1"
  158. word$(3)="7O1"
  159. word$(4)="8N1"
  160. word$(5)="8E1"
  161. word$(6)="8O1"
  162. worddef$="8N1"
  163. word%=4
  164. xsave%=0
  165. yapp%=
  166. yappfile$=""
  167. yapppathfile$=""
  168. yappspy%=0
  169. yappup%=
  170.     yc%=0
  171. ysave%=0
  172. *FX4,2
  173.  "OS_SerialOp",0,0,&FFFFFFF0
  174. $block%="TASK"
  175.  "Wimp_Initialise",200,!block%,"tnc" 
  176.  ,task%
  177.  "Wimp_OpenTemplate",,"<tnc$DIR>.Templates"
  178. indtemp%=ind%
  179. infohdl%=
  180. template("info")
  181.  clockhdl%=
  182. template("clock")
  183. whdl%=
  184. template("window")
  185.  setuphdl%=
  186. template("setup")
  187. $uploadhdl%=
  188. template("progress")
  189.  fkeyshdl%=
  190. template("fkeys")
  191. !sfkeyshdl%=
  192. template("fkeys")
  193. !cfkeyshdl%=
  194. template("fkeys")
  195. "scfkeyshdl%=
  196. template("fkeys")
  197. savehdl%=
  198. template("save")
  199. $ramhdl%=
  200. template("ramprogress")
  201. yapphdl%=
  202. template("yapp")
  203. "yappuphdl%=
  204. template("yappup")
  205.  amtorhdl%=
  206. template("amtor")
  207. rttyhdl%=
  208. template("rtty")
  209. cwhdl%=
  210. template("morse")
  211. #wkeyshdl%=
  212. template("wimpkeys")
  213. grabhdl%=
  214. template("grab")
  215. "streamhdl%=
  216. template("stream")
  217. "ctextshdl%=
  218. template("ctexts")
  219. "pactorhdl%=
  220. template("pactor")
  221. errhdl%=
  222. template("error")
  223. $filerrhdl%=
  224. template("filerror")
  225.  "Wimp_CloseTemplate"
  226. block%!0=infohdl%
  227.  "Wimp_GetWindowState",,block%
  228.  "Wimp_OpenWindow",,block%
  229. redraw
  230. iconbar%=
  231. iconbar
  232. seticontext(15,infohdl%,version$)
  233. getwkeys
  234. ctexts
  235. loadkeyfile("fkeys")
  236. loadkeyfile("sfkeys")
  237. loadkeyfile("cfkeys")
  238. loadkeyfile("scfkeys")
  239. setup
  240. setcursor
  241. wimperror
  242.  close%=
  243. close:
  244. *POINTER
  245. block%!0=infohdl%
  246.  "Wimp_CloseWindow",,block%
  247. &400E1,mask%,block%,delay%
  248. reason%,block%:
  249. 6,2,2
  250. reason% 
  251. yapp%=
  252. yappup%=
  253. yappup
  254.  yapp%=
  255.  yappup%=
  256. (-2)>0 
  257. clock%=
  258. checkclock
  259. upload%=
  260. checktnc
  261. memack%=
  262. memsend
  263. wrap%=
  264.  yapp%=
  265. packet%=
  266. diddle
  267. caret%=
  268. updatecaret
  269. redraw
  270.  "Wimp_OpenWindow",,block%
  271. closewindow(block%!0)
  272. mouse_click(block%)
  273. dragsave
  274. keypress
  275. menu_action(block%)
  276. scrollreq
  277. 17,18:
  278. receive(block%)
  279.  quit%=
  280. close
  281. template(name$)
  282.  "Wimp_LoadTemplate",,block%,indtemp%,indend%,-1,name$,0 
  283.  ,,indtemp%
  284.  "Wimp_CreateWindow",,block% 
  285.  hdl%
  286.     =hdl%
  287. setup
  288.  "OS_File",5,"<tnc$Dir>.defaults" 
  289.  type%
  290.  type% 
  291.  0,2:
  292. standard
  293. loadsetup
  294. 6,2,2
  295. standard
  296.  "OS_SerialOp",5,5
  297.  "OS_SerialOp",6,5
  298.  "OS_SerialOp",1,0
  299. beeps%=
  300. kam%=
  301. wrap%=
  302. caret%=
  303. deffile$="$.Packet"
  304. defgrab$="$.Grab"
  305. %dateformat$="%we %zdy %mo %ce%yr"
  306. timeformat$="%24:%mi:%se"
  307. loadsetup
  308. $channel%=
  309. ("<tnc$DIR>.defaults")
  310. baud%=
  311. #(channel%)
  312. bauddef$=baud$(baud%)
  313. word%=
  314. #(channel%)
  315. worddef$=word$(word%)
  316. beeps%=
  317. #(channel%)
  318. kam%=
  319. #(channel%)
  320. wrap%=
  321. #(channel%)
  322. caret%=
  323. #(channel%)
  324. ctextstick%=
  325. #(channel%)
  326. deffile$=
  327. #(channel%)
  328. defgrab$=
  329. #(channel%)
  330. dateformat$=
  331. #(channel%)
  332. timeformat$=
  333. #(channel%)
  334.  deffile$="" 
  335.  deffile$="$.Packet"
  336.  defgrab$="" 
  337.  defgrab$="$.Grab"
  338. #(channel%)
  339.  "OS_SerialOp",5,baud%:
  340.  3 to 8 inc is 300,1200,2400,4800,9600,19200
  341.  "OS_SerialOp",6,baud%
  342. codeword
  343. seticontext(10,setuphdl%,baud$(baud%))
  344. seticontext(1,setuphdl%,word$(word%))
  345. seticontext(13,setuphdl%,deffile$)
  346. seticontext(31,setuphdl%,defgrab$)
  347. seticontext(0,savehdl%,deffile$)
  348. seticontext(25,setuphdl%,dateformat$)
  349. seticontext(26,setuphdl%,timeformat$)
  350. seticontext(0,grabhdl%,defgrab$)
  351. beeps%=
  352. select(beeps%,16)
  353. kam%=
  354. select(kam%,17)
  355. wrap%=
  356. select(wrap%,19)
  357. caret%=
  358. select(caret%,28)
  359. usenewdefaults
  360.  "OS_SerialOp",0,0,&FFFFFFF0
  361. geticontext(13,setuphdl%,deffile$)
  362.  deffile$="" 
  363.  deffile$="$.Packet"
  364. geticontext(31,setuphdl%,defgrab$)
  365.  defgrab$="" 
  366.  defgrab$="$.Grab"
  367. geticontext(25,setuphdl%,dateformat$)
  368. geticontext(26,setuphdl%,timeformat$)
  369. icondefaults
  370.  "OS_SerialOp",5,baud%
  371.  "OS_SerialOp",6,baud%
  372. codeword
  373.  "OS_SerialOp",1,code%
  374. select(icondef%,select%)
  375.  icondef%=
  376. clearicon(setuphdl%,select%)
  377. seticon(setuphdl%,select%)
  378.   icondef%=
  379. =icondef%
  380. baudchange(step%)
  381. baud%=baud%+step%
  382.  baud%=9 
  383.  baud%=3
  384.  baud%=2 
  385.  baud%=8
  386. seticontext(10,setuphdl%,baud$(baud%))
  387. wordchange(step%)
  388. word%=word%+step%
  389.  word%=-1 
  390.  word%=6
  391.  word%=7 
  392.  word%=0
  393. seticontext(1,setuphdl%,word$(word%))
  394. codeword
  395.  word% 
  396.  0:code%=%011101
  397.  1:code%=%001101
  398.  2:code%=%011001
  399.  3:code%=%001001
  400.  4:code%=%0
  401.  5:code%=%011000
  402.  6:code%=%001000
  403.  "OS_SerialOp",1,code%
  404. protoabort
  405. seticontext(10,setuphdl%,bauddef$)
  406. seticontext(1,setuphdl%,worddef$)
  407.  spoolfile$="" 
  408.  spoolfile$=deffile$
  409. seticontext(13,setuphdl%,spoolfile$)
  410.  grabfile$="" 
  411.  grabfile$=defgrab$
  412. seticontext(31,setuphdl%,grabfile$)
  413. seticontext(25,setuphdl%,dateformat$)
  414. seticontext(26,setuphdl%,timeformat$)
  415. seticontext(36,setuphdl%,yappon$)
  416. seticontext(37,setuphdl%,yappoff$)
  417. usenewdefaults
  418. icondefaults
  419. checkicon(16,setuphdl%)
  420.  check%=
  421.   beeps%=
  422.   beeps%=
  423. checkicon(17,setuphdl%)
  424.  check%=
  425.   kam%=
  426.   kam%=
  427. checkicon(19,setuphdl%)
  428.  check%=
  429.   wrap%=
  430.   wrap%=
  431. checkicon(28,setuphdl%)
  432.  check%=
  433.   caret%=
  434.   caret%=
  435. savesetup
  436. usenewdefaults
  437.  "OS_File",6,("<tnc$DIR>.defaults")
  438. $channel%=
  439. ("<tnc$DIR>.defaults")
  440. #channel%,baud%
  441. #channel%,word%
  442. #channel%,beeps%
  443. #channel%,kam%
  444. #channel%,wrap%
  445. #channel%,caret%
  446. #channel%,ctextstick%
  447. #channel%,deffile$;
  448. #channel%,defgrab$;
  449. #channel%,dateformat$;
  450. #channel%,timeformat$;
  451. #channel%
  452. setcursor
  453.  "ColourTrans_ReturnColourNumber",&0000FF00 
  454.  caretcol%
  455.  "Wimp_ReadPalette",,block%
  456. backcol%=block%?4
  457. caretcol%=block%?44
  458. )flagtweak%=(backcol% 
  459.  caretcol%)<<16
  460. setbits%=caretcol%<<26
  461. $flagtweak%=flagtweak% 
  462.  setbits%
  463. yapp%=
  464. 6,202,0,255
  465. ,key%,space%
  466. space%=0
  467. (key%
  468. (key%
  469. 72)=72
  470. &57,4
  471. beeps%=
  472. 13:pac%?cc%=13
  473. spool%=
  474. seticontext(5,savehdl%,
  475. #spy%))
  476. $block%!0=whdl%:
  477.  &400CB,,block%
  478. ci%>31
  479. ci%<127
  480. pac%?cc%=ci%:cc%+=1
  481. filter%=
  482. spool%=
  483. #spy%,ci%
  484. filter%=
  485. spool%=
  486. #spy%,ci%
  487. cc%=80
  488. ci%=13
  489. (-2)<1
  490.  ci%<>13
  491. :pac%?cc%=13:
  492. cc%=80
  493. ci%=13
  494. pac$=$pac%:
  495. scrollrx
  496. scrollrx
  497. first%=
  498. #block%!0=whdl%:
  499. &400CB,,block%
  500. 6r1%=block%!20+4:r2%=block%!24-(block%!16-block%!8)
  501. 4r3%=block%!20+(block%!12-block%!4):r4%=block%!24
  502. &400EB,whdl%,r1%,-32000,r3%,r4%,r1%,-31968
  503. sline%+=1:first%=
  504.  ci%=13
  505.  sline%>numlines%-1
  506. :sline%=1:scrolled%=
  507.  sline%>0
  508. :line$(sline%)=pac$:
  509. :line$(numlines%)=pac$:
  510. pac$,"***")>0
  511. connected
  512. clear%=0
  513. cc%+1:pac%?clear%=0:
  514. cc%=0:first%=
  515. spool%=
  516. #spy%,10
  517. line$(sline%)=pac$
  518. /block%!0=whdl%:block%!4=r1%:block%!8=-31996
  519. 'block%!12=r3%:block%!16=block%!8+32
  520. &400C9,,block%
  521. more%
  522. more%
  523. block%!4-block%!20+4,block%!8-r2%-31968
  524. line$(sline%):
  525. &400CA,,block% 
  526.  more%
  527. redraw
  528. &400C8,,block% 
  529.  more%
  530.  more%
  531. ,tl%=1-(block%!24-block%!16+block%!40)
  532. ,bl%=1-(block%!24-block%!16+block%!32)
  533. bl%>numlines%
  534. bl%=numlines%:
  535.  tl%<numlines%+1
  536. Kx%=block%!4-block%!20+4:y%=block%!40-(block%!24-block%!16+block%!40)
  537. pl%=tl%
  538. x%,y%:y%-=32:
  539. line$((pl%+sline%)
  540. numlines%):
  541. &400CA,,block%
  542. more%:
  543. closewindow(hdl%)
  544.  (yapp%=
  545.  yappup%=
  546.  (hdl%=yapphdl% 
  547.  hdl%=yappuphdl%) 
  548. seticontext(1,yapphdl%,"Abort to close tidily")
  549. seticontext(1,yappuphdl%,"Abort to close tidily")
  550.  hdl%=savehdl% 
  551.  hdl%=setuphdl% 
  552.  "Wimp_CreateMenu",,-1
  553.   block%!0=hdl%
  554.  "Wimp_CloseWindow",,block%
  555.  hdl% 
  556.  clockhdl%:clock%=
  557.  uploadhdl%:upload%=
  558.  ramhdl%:memack%=
  559. &    
  560.  fkeyshdl%,wkeyshdl%:fkeys%=
  561.  errwindow%:close%=
  562.  yapphdl%:
  563. +      
  564. seticontext(0,yapphdl%,"Packet")
  565.     &      
  566. seticontext(5,yapphdl%,"0")
  567. &      
  568. seticontext(3,yapphdl%,"0")
  569. &      
  570. seticontext(4,yapphdl%,"0")
  571. 3      
  572. seticontext(1,yapphdl%,"Awaiting start")
  573. *      
  574. seticontext(6,yapphdl%,"Abort")
  575. 1      
  576.  state$="R" 
  577. out("{break}"):
  578.  direct
  579.  state$="RH2" 
  580.  yappfile$<>"" 
  581. .    
  582.  "OS_File",18,yapppathfile$,
  583. (type$)
  584. out("[06][02]")
  585.     state$="RD"
  586. )    
  587. updateicon(yapphdl%,2,&1700013B)
  588. 1    
  589. seticontext(1,yapphdl%,"Receiving file")
  590. (-2)<2 
  591.  state$ 
  592.  "R":
  593.  &57,4 
  594.  ,ci%
  595.  ci% 
  596.       
  597.         
  598.         
  599.           
  600.  &57,4 
  601.  ,ci%
  602.         
  603.  ci%=1 
  604.         
  605.  ci%=1 
  606.           
  607. out("[06][01]")
  608.           state$="RH"
  609. *=          
  610. seticontext(1,yapphdl%,"Awaiting file header")
  611.         
  612. ,*          
  613. yappabort("Abort received")
  614.         
  615. .        
  616. /        
  617.  "RH":
  618.  &57,4 
  619.  ,ci%
  620.  ci% 
  621.       
  622. 4"        
  623.  &57,4 
  624.  ,headerlen%
  625.         
  626. getyappname
  627. 6"        yappname$=$(yappname%)
  628. 7$        headerlen%-=
  629. (yappname$)
  630. 88        
  631. (yappname$)>10 
  632.  yappname$=
  633. yappname$,10)
  634. 9.        
  635. seticontext(0,yapphdl%,yappname$)
  636.         
  637. getyappname
  638. ;'        yapplength%=
  639. ($(yappname%))
  640. <'        headerlen%-=
  641. ($(yappname%))
  642. =1        
  643. seticontext(5,yapphdl%,$(yappname%))
  644. >(        
  645. seticontext(3,yapphdl%,"0")
  646. ?>        
  647. seticontext(1,yapphdl%,"Drag file to DIR viewer")
  648. @-        
  649. updateicon(yapphdl%,2,&1700A13B)
  650. A.        
  651. geticontext(36,setuphdl%,yappon$)
  652.         
  653.  headerlen%>0 
  654.           
  655. getyappname
  656. D8          
  657. (yappname$)>3 
  658.  yappname$=
  659. yappname$,3)
  660. E?          
  661.  "XWimp_SpriteOp",&118,,"file_"+yappname$ 
  662. FC          
  663.  r0%=&118 
  664.  name$="sfile_"+type$ 
  665.  name$="sfile_xxx"
  666. G)          
  667. swapicon(yapphdl%,2,name$)
  668.         
  669.       
  670.         
  671.  &57,4 
  672.  ,ci%
  673.         
  674.  ci%=1 
  675.           
  676. out("[06][04]")
  677.           state$="R"
  678.           yappfile$=""
  679. O1          
  680. seticontext(1,yapphdl%,"Finished")
  681. P-          
  682. seticontext(6,yapphdl%,"Quit")
  683. Q&          
  684. out("{break}"):
  685.  direct
  686.           
  687. tncslow
  688. S$          
  689. out("k[13]"):
  690.  direct
  691.           yapp%=
  692.         
  693. V*          
  694. yappabort("Abort received")
  695.         
  696. X!      
  697.  &57,4 
  698.  ,ignore%
  699. Y        
  700. Z&      
  701. yappabort("Abort received")
  702. [        
  703. \        
  704.  "RD":
  705.  data%=
  706.       
  707. yappdata
  708. `        
  709.       
  710.  &57,4 
  711.  ,ci%
  712.       
  713.  ci% 
  714.         
  715. d%          
  716.  &57,4 
  717.  ,datalength%
  718. e/          
  719.  datalength%=0 
  720.  datalength%=256
  721.           yc%=0
  722.           
  723. yappdata
  724.         
  725.           
  726.  &57,4 
  727.           
  728.  ci%=4 
  729. k             
  730. out("[06][03]")
  731.             state$="RH"
  732. m6            
  733. seticontext(3,yapphdl%,
  734. #yappspy%))
  735. nH            
  736. seticontext(4,yapphdl%,
  737. #yappspy%*100 
  738.  yapplength%))
  739. oA            
  740. seticontext(1,yapphdl%,"File received, closing")
  741.             
  742. #yappspy%
  743.           
  744. r,            
  745. yappabort("Abort received")
  746.           
  747.       
  748. u(        
  749. yappabort("Abort received")
  750.       
  751. w        
  752.  "CW":
  753.  &57,4 
  754.  ,ci%
  755.  ci%<>24 
  756. {&      
  757. yappabort("Abort received")
  758. |        
  759.       
  760.  &57,4 
  761.  ,ci%
  762.       
  763.  ci% 
  764.         
  765.  5:state$="R"
  766.       
  767.         
  768. out("[06][05]")
  769.         state$="CW"
  770.       
  771.         
  772.  &57,4 
  773.  ,ci%
  774.  ci%<>24 
  775. $    
  776. yappabort("Abort received")
  777. out("[06][05]")
  778. <    
  779. seticontext(1,yapphdl%,"Cancel received, finished")
  780. #yappspy%
  781.     state$="R"
  782. getyappname
  783.     yc%=0
  784.  &57,4 
  785.  ,ci%
  786.  ci%=46 
  787.  ci%=47
  788.   yappname%?yc%=ci%
  789.   yc%+=1
  790.  ci%=0 
  791. =1000
  792. yappname%?(yc%-1)=13
  793. yappdata
  794.  &57,4 
  795.  ,ci%
  796. #yappspy%,ci%
  797.   yc%+=1
  798.  yc%=datalength% 
  799. (-2)=0
  800. seticontext(3,yapphdl%,
  801. #yappspy%))
  802. seticontext(4,yapphdl%,
  803. #yappspy%*100 
  804.  yapplength%))
  805.  yc%<datalength% 
  806.  data%=
  807.  data%=
  808. yappabort(reason$)
  809.  yapp%=
  810. seticontext(1,yapphdl%,reason$)
  811. seticontext(6,yapphdl%,"Quit")
  812.   yapp%=
  813.  "XOS_Find",0,yappspy%
  814.  yappup%=
  815. seticontext(1,yappuphdl%,reason$)
  816. seticontext(6,yappuphdl%,"Quit")
  817.   yappup%=
  818.  "XOS_Find",0,ydata%
  819. state$="Abort"
  820. out("[24]Abort[13]")
  821. out("{break}"):
  822.  direct
  823. tncslow
  824. out("k[13]"):
  825.  direct
  826. yappup
  827.  state$ 
  828.  "S":
  829.  "S2":
  830. (-2)<1 
  831. %      
  832.  delay%>=duration%+12000 
  833. !        
  834. yappabort("Timeout")
  835.       
  836.         
  837. yappupsendab
  838.         delay%+=500
  839.       
  840.         
  841.       
  842.  &57,4 
  843.  ,ci%
  844.       
  845.  ci% 
  846.         
  847.           
  848.  &57,4 
  849.  ,ci%
  850.           
  851.  ci% 
  852.             
  853.               state$="SH"
  854. ?              
  855. seticontext(1,yappuphdl%,"Sending filename")
  856.             
  857.               state$="SD"
  858. ;              
  859. seticontext(1,yappuphdl%,"Sending file")
  860.             
  861.               
  862. yappupsendab
  863.           
  864. %        
  865.  no action required
  866.       
  867. (        
  868. yappabort("Abort received")
  869.       
  870.         
  871.  "SH":
  872. -    
  873. geticontext(0,yappuphdl%,yappfile2$)
  874.     yappfile2$=
  875. yappfile2$)
  876. out("[01]")
  877. 7    sendlen%=2+
  878. (yappfile2$)+
  879. (length%))+
  880. (type$)
  881. #    
  882.  "OS_SerialOp",3,sendlen%
  883. out(yappfile2$)
  884. out("[00]")
  885. (length%))
  886. out("[00]")
  887. out(type$)
  888.     state$="SH2"
  889. *    
  890.  "OS_ReadMonotonicTime" 
  891.  delay%
  892.     duration%=delay%
  893.  "SH2":
  894. (-2)<1 
  895. %      
  896.  delay%>=duration%+12000 
  897. !        
  898. yappabort("Timeout")
  899.       
  900.         delay%+=500
  901.       
  902.         
  903.       
  904.  &57,4 
  905.  ,ci%
  906.       
  907.  ci% 
  908.         
  909.           
  910. (-2)<1 
  911.           
  912.  &57,4 
  913.  ,ci%
  914.           
  915.  ci%=2 
  916.             state$="SD"
  917. 9            
  918. seticontext(1,yappuphdl%,"Sending data")
  919.           
  920.             
  921. yappupsendab
  922.           
  923.         
  924.           state$="S"
  925. <          
  926. seticontext(1,yappuphdl%,"Restart requested")
  927.       
  928.         
  929. yappabort
  930.       
  931.         
  932.  "SD":
  933. 0    
  934. (-2)>0 
  935. yappabort("Abort received")
  936. outyapp
  937.  "SE":
  938. (-2)<2 
  939. %      
  940.  delay%>=duration%+12000 
  941. !        
  942. yappabort("Timeout")
  943.       
  944.         delay%+=500
  945.       
  946.         
  947.       
  948.  &57,4 
  949.  ,ci%
  950.       
  951.  &57,4 
  952.  ,cj%
  953.       
  954.  ci%=6 
  955.  cj%=3 
  956.         state$="ST"
  957. 5        
  958. seticontext(1,yappuphdl%,"File sent OK")
  959.       
  960. (        
  961. yappabort("Abort received")
  962.       
  963.         
  964.  "ST":
  965.  "OS_SerialOp",3,4
  966.  "OS_SerialOp",3,1
  967. -    
  968. seticontext(1,yappuphdl%,"Finished")
  969. )    
  970. seticontext(6,yappuphdl%,"Quit")
  971.      
  972. out("{break}"):
  973.  direct
  974. out("k[13]")
  975.     yappup%=
  976. outyapp
  977. (-3)>127 
  978. &   numbytes%=length%-
  979. #ydata%
  980.  numbytes%>127 
  981.  numbytes%=127
  982.  "OS_SerialOp",3,2
  983.  "OS_SerialOp",3,numbytes%
  984.     numbytes%-=1
  985.     byte%=
  986. #(ydata%)
  987. -     
  988.  "OS_SerialOp",3,byte%
  989.  numbytes%=0 
  990. #ydata%
  991.   block%!0=yapphdl%
  992.  "Wimp_GetWindowState",,block%
  993. seticontext(3,yappuphdl%,
  994. #ydata%))
  995. seticontext(4,yappuphdl%,
  996. #ydata%*100 
  997.  length%))
  998. #ydata% 
  999. #(ydata%)
  1000.     state$="SE"
  1001. 6*    
  1002.  "OS_ReadMonotonicTime" 
  1003.  delay%
  1004.     duration%=delay%
  1005.  "OS_SerialOp",3,3
  1006.  "OS_SerialOp",3,1
  1007. yappupsendab
  1008.  state$ 
  1009.  "S":
  1010. A&    
  1011. out("[03]trans[13]"):
  1012.  direct
  1013. C2    
  1014. seticontext(1,yappuphdl%,"Starting YAPP")
  1015. D*    
  1016. seticontext(6,yappuphdl%,"Abort")
  1017.     state$="S2"
  1018. F*    
  1019.  "OS_ReadMonotonicTime" 
  1020.  delay%
  1021.     duration%=delay%
  1022.  "S2":
  1023. out("[05][01]")
  1024. yappabort("Abort received")
  1025. iconbar
  1026.  window handle=-1:box (0,0) to (68,68)
  1027.  flags:icon is sprite, indirected, button type 2
  1028. Q:!q%=-1:q%!4=0:q%!8=0:q%!12=68:q%!16=68:q%!20=&17002122
  1029. $iconsp%="!tnc"
  1030. SEq%!24=iconsp%:q%!28=1:q%!32=
  1031. ($iconsp%):
  1032.  System area for sprites
  1033.  "Wimp_CreateIcon",,q% 
  1034. X'!q%=-2:q%!4=iconbar%:q%!8=0:q%!12=0
  1035.  "Wimp_SetIconState",,q%
  1036. receive(block%)
  1037. sendhdl%=block%!4
  1038. reason%=block%!16
  1039.  "Wimp_GetPointerInfo",,block2%
  1040. hdl%=block2%!12
  1041.  reason% 
  1042.     quit%=
  1043. memack(block%)
  1044.  yapp%=
  1045.       yappfile$=""
  1046.       next%=0
  1047. i!      name%=block%?(44+next%)
  1048.       
  1049.         yappfile$+=
  1050. (name%)
  1051.         next%+=1
  1052. m#        name%=block%?(44+next%)
  1053.       
  1054.  name%=0
  1055. o0      
  1056.  yappfile$<>"" 
  1057. yappfile$,".")<>0 
  1058. p&        
  1059.  "OS_File",6,(yappfile$)
  1060. q!        yappspy%=
  1061. (yappfile$)
  1062. r#        yapppathfile$=yappfile$
  1063. s(        
  1064. seticontext(3,yapphdl%,"0")
  1065.         state$="RH2"
  1066.       
  1067. v6        
  1068. sayerror("Invalid file name - try again")
  1069.       
  1070.       
  1071. y        
  1072.  grab%=
  1073.       
  1074.  spool%=
  1075. |)        
  1076. sayerror("Already spooling")
  1077.       
  1078.         spoolfile$=""
  1079.         next%=0
  1080. #        name%=block%?(44+next%)
  1081.         
  1082. "          spoolfile$+=
  1083. (name%)
  1084.           next%+=1
  1085. %          name%=block%?(44+next%)
  1086.         
  1087.  name%=0
  1088. 4        
  1089.  spoolfile$<>"" 
  1090. spoolfile$,".")<>0 
  1091. "          
  1092. spoolok(spoolfile$)
  1093. 1          
  1094. seticontext(0,savehdl%,spoolfile$)
  1095.         
  1096. =          
  1097. sayerror("Drag file name to directory viewer")
  1098.         
  1099.       
  1100.        
  1101. closewindow(savehdl%)
  1102.         
  1103.       grabfile$=""
  1104.       next%=0
  1105. !      name%=block%?(44+next%)
  1106.       
  1107.         grabfile$+=
  1108. (name%)
  1109.         next%+=1
  1110. #        name%=block%?(44+next%)
  1111.       
  1112.  name%=0
  1113.       
  1114. grabtext
  1115.         
  1116.  hdl% 
  1117. #      
  1118.  whdl%:
  1119. dataload(block%)
  1120.         
  1121. memload(block%)
  1122.  &400C1:
  1123. setcursor
  1124. memack(block%)
  1125. block%!12=block%!8
  1126. block%!16=6
  1127. block%!20=databuff%
  1128. block%!24=1024
  1129.  "Wimp_SendMessage",18,block%,block%!4
  1130. memload(block%)
  1131. numbytes%=block%!24
  1132.  numbytes%<1024 
  1133.   datapointer%=databuff%
  1134.   block%!0=ramhdl%
  1135.  "Wimp_GetWindowState",,block%
  1136.  "Wimp_OpenWindow",,block%
  1137. seticontext(1,ramhdl%,
  1138. (numbytes%))
  1139.  &10000,"Large file - save to disc first, then upload."
  1140. memsend
  1141. upload%=
  1142.  "OS_Byte",128,253 
  1143.  ,space%
  1144.  space%>128 
  1145.     byte%=?datapointer%
  1146.  byte%=10 
  1147.  byte%=13
  1148. (byte%))
  1149.     datapointer%+=1
  1150.  datapointer%=databuff%+numbytes% 
  1151.  byte%=13
  1152.  datapointer%=databuff%+numbytes% 
  1153.  ctrlz%=
  1154. out(fkey$(1,11))
  1155. closewindow(ramhdl%)
  1156. upload%=
  1157. dataload(block%)
  1158. block%!12=block%!8
  1159. block%!16=4
  1160. hdl%=block%!20
  1161.  "Wimp_SendMessage",17,block%,block%!4
  1162.  hdl%=whdl% 
  1163.   type%=block%!40
  1164.   type$=
  1165. ~(block%!40)
  1166.  type% 
  1167. 4    
  1168.  &1000:
  1169. badfile("Can't upload a directory")
  1170. 8    
  1171.  &2000:
  1172. badfile("Can't upload an !Application")
  1173. 5    
  1174.  "XWimp_SpriteOp",&118,,"file_"+type$ 
  1175. =    
  1176.  r0%=&118 
  1177.  name$="sfile_"+type$ 
  1178.  name$="sfile_xxx"
  1179. prepareupload(type%)
  1180. grabtext
  1181.  grabfile$="" 
  1182.  grabfile$=defgrab$
  1183.  grabfile$<>"" 
  1184. grabfile$,".")<>0 
  1185.  "OS_File",6,grabfile$
  1186.   grabchannel%=
  1187. (grabfile$)
  1188.  "OS_File",18,grabfile$,&fff
  1189. seticontext(0,grabhdl%,grabfile$)
  1190.  scrolled%=
  1191. nextgrab
  1192. +    
  1193.  savelines%=sline%+1 
  1194.  numlines%-1
  1195. *      
  1196. #grabchannel%,line$(savelines%)
  1197.  savelines%
  1198. nextgrab
  1199. #grabchannel%
  1200. sayerror("Drag file name to directory viewer")
  1201. grab%=
  1202. closewindow(grabhdl%)
  1203.  "Wimp_SetCaretPosition",whdl%,line%,xsave%,ysave%,-1,-1
  1204. nextgrab
  1205.  savelines%=1 
  1206.  sline%
  1207. #grabchannel%,line$(savelines%)
  1208.  savelines%
  1209. badfile(message$)
  1210. !block%=
  1211. $(block%+4)=message$
  1212.  "Wimp_ReportError",block%,%10001,"Upload error" 
  1213.  ,response%
  1214. prepareupload(type%)
  1215.  "OS_Byte",129,&FF,&FF 
  1216.  ,pressed%
  1217.  pressed%=&FF 
  1218. checkupload
  1219.   fileout$=""
  1220.   next%=0
  1221.     name%=block%?(44+next%)
  1222.     "    fileout$=fileout$+
  1223. (name%)
  1224.     next%+=1
  1225.  name%=0
  1226.  "OS_File",5,fileout$ 
  1227.  ,,,,length%
  1228.   ascii%=
  1229. (fileout$)
  1230.   block%!0=uploadhdl%
  1231.  "Wimp_GetWindowState",,block%
  1232.  "Wimp_OpenWindow",,block%
  1233. seticontext(0,uploadhdl%,fileout$)
  1234.  "Wimp_GetCaretPosition",,block%
  1235.   xoff%=block%!8
  1236.   yoff%=block%!12
  1237.  "Wimp_SetCaretPosition",uploadhdl%,0,xoff%,yoff%,-1,
  1238. (fileout$)-1
  1239. seticontext(1,uploadhdl%,
  1240. (length%))
  1241. seticontext(2,uploadhdl%,"0")
  1242. seticontext(3,uploadhdl%,"0")
  1243. checktnc
  1244.  "OS_Byte",128,253 
  1245.  ,space%
  1246.  space%>128 
  1247. upload
  1248. upload
  1249. byte%=0
  1250.   byte%=
  1251. #(ascii%)
  1252.  byte%=10 
  1253.  byte%=13
  1254.  "OS_SerialOp",3,byte%
  1255. #(ascii%) 
  1256.  byte%=13
  1257.  byte%=13 
  1258.   block%!0=uploadhdl%
  1259.  "Wimp_GetWindowState",,block%
  1260. seticontext(2,uploadhdl%,
  1261. #ascii%))
  1262. seticontext(3,uploadhdl%,
  1263. #ascii%*100 
  1264.  length%))
  1265. #(ascii%) 
  1266. finishupload
  1267. finishupload
  1268. #ascii%
  1269. upload%=
  1270.  ctrlz%=
  1271. out(fkey$(1,11))
  1272. closewindow(uploadhdl%)
  1273. checkupload
  1274. block%!0=yappuphdl%
  1275.  "Wimp_GetWindowState",,block%
  1276.  "Wimp_OpenWindow",,block%
  1277. yappup%=
  1278. state$="S"
  1279. yappfile$=""
  1280. next%=0
  1281.   name%=block%?(44+next%)
  1282. B"  yappfile$=yappfile$+
  1283. (name%)
  1284.   next%+=1
  1285.  name%=0
  1286.  "OS_File",5,yappfile$ 
  1287.  ,,,,length%
  1288. yappfile$=
  1289. yappfile$)
  1290. ydata%=
  1291. (yappfile$)
  1292. yappfile$=
  1293. yappfile$,10)
  1294.   next%=
  1295. yappfile$,".")
  1296.  next%>0 
  1297.     next2%=next%
  1298.     yappfile2$=""
  1299. N        
  1300.       next2%+=1
  1301. P$      char$=
  1302. yappfile$,next2%,1)
  1303. Q%      yappfile2$=yappfile2$+char$
  1304. R"    
  1305.  next2%=10 
  1306.  next2%=next%
  1307.     yappfile$=yappfile2$
  1308. yappfile$,".")=0
  1309. swapicon(yappuphdl%,2,name$)
  1310. seticontext(5,yappuphdl%,
  1311. (length%))
  1312. seticontext(3,yappuphdl%,"0")
  1313. seticontext(4,yappuphdl%,"0")
  1314. seticontext(0,yappuphdl%,yappfile$)
  1315. seticontext(1,yappuphdl%,"Ready to send")
  1316. seticontext(6,yappuphdl%,"Send")
  1317. abort
  1318. #ascii%>0 
  1319. out("[13]<File upload aborted>[13]")
  1320. finishupload
  1321. closewindow(uploadhdl%)
  1322. #ascii%
  1323. checkicon(icon%,hdl%)
  1324. block%!0=hdl%
  1325. block%!4=icon%
  1326.  "Wimp_GetIconState",,block%
  1327.  (block%!24 
  1328.  &200000)=&200000 
  1329.  check%=
  1330.  check%=
  1331. geticontext(icon%,hdl%,
  1332.  icontxt$)
  1333. block%!0=hdl%
  1334. block%!4=icon%
  1335.  &400CE,,block%
  1336. icontxt$=$(block%!28)+
  1337. out(btext$)
  1338.  charout%=1 
  1339. (btext$)
  1340. y"  byte%=
  1341. btext$,charout%,1))
  1342.  byte% 
  1343. {*    
  1344. controlcode(btext$,charout%)
  1345.  123:
  1346. }'      endcom%=
  1347. btext$,"}",charout%)
  1348.       
  1349.  endcom%-charout% 
  1350.         
  1351. (          
  1352. btext$,charout%+1,4) 
  1353.              
  1354.  "DATE","date":
  1355. 5              
  1356.  "SET Sys$DateFormat "+dateformat$
  1357. %              
  1358. datetime(command$)
  1359.              
  1360.  "TIME","time":
  1361. 5              
  1362.  "SET Sys$DateFormat "+timeformat$
  1363. %              
  1364. datetime(command$)
  1365.              
  1366.  "CALL","call":
  1367.               
  1368.  amtor%=
  1369. 7                
  1370. geticontext(10,amtorhdl%,command$)
  1371. '                command$=
  1372. command$)
  1373.               
  1374.               
  1375.  pactor%=
  1376. 7                
  1377. geticontext(3,pactorhdl%,command$)
  1378. '                command$=
  1379. command$)
  1380.               
  1381.               
  1382.  rtty%=
  1383. 6                
  1384. geticontext(12,rttyhdl%,command$)
  1385. '                command$=
  1386. command$)
  1387.               
  1388.              
  1389.  "NAME","name":
  1390.               
  1391.  amtor%=
  1392. 7                
  1393. geticontext(16,amtorhdl%,command$)
  1394. '                command$=
  1395. command$)
  1396.               
  1397.           
  1398.           chartemp%=endcom%
  1399.           
  1400. out(command$)
  1401.            charout%=chartemp%
  1402.         
  1403. (          
  1404. btext$,charout%+1,5) 
  1405. "            
  1406.  "BREAK","break":
  1407.               
  1408. &57,2,50
  1409.           
  1410.           charout%=endcom%
  1411.         
  1412. (          
  1413. btext$,charout%+1,6) 
  1414. $            
  1415.  "UPLOAD","upload":
  1416. 2              endname%=
  1417. btext$," ",charout%+8)
  1418. F              fileout$="<tnc$DIR>.UploadFile."+
  1419. btext$,charout%+8)
  1420. 1              
  1421.  "OS_File",5,fileout$ 
  1422.  type%
  1423.               
  1424.  type% 
  1425.                 
  1426.                 
  1427. (                  ascii%=
  1428. (fileout$)
  1429.                   
  1430. (                    byte%=
  1431. #(ascii%)
  1432. "                    
  1433.  byte% 
  1434. '                      
  1435.  10:byte%=13
  1436.                        
  1437.  123:
  1438.                     
  1439. 0                    
  1440.  "OS_SerialOp",3,byte%
  1441. "                  
  1442. #(ascii%)
  1443.                   
  1444. #ascii%
  1445.                 
  1446.               
  1447. -            
  1448.  "PECKON","peckon":packet%=
  1449.           
  1450. D          
  1451.  endname%<>0 
  1452.  charout%=endname% 
  1453.  charout%=
  1454. (btext$)
  1455.         
  1456. (          
  1457. btext$,charout%+1,7) 
  1458. /            
  1459.  "PECKOFF","peckoff":packet%=
  1460.           
  1461.           charout%=endname%
  1462.       
  1463.      
  1464.  "OS_SerialOp",3,byte%
  1465.  charout%
  1466. host(cbyte%,pbyte%,sbyte%,btext$)
  1467.  "OS_SerialOp",3,&C0
  1468.  "OS_SerialOp",3,cbyte%
  1469.  "OS_SerialOp",3,pbyte%
  1470.  "OS_SerialOp",3,sbyte%
  1471. out(btext$)
  1472.  "OS_SerialOp",3,&C0
  1473. kamrx
  1474. (-2)=0
  1475. &57,4
  1476. ,kamci%
  1477.  kamci% 
  1478.  10,13:
  1479. )      
  1480. scrollkamrx($(host%+partpac%))
  1481.       partpac%=kamcc%
  1482.  &C0:
  1483.       host%?kamcc%=13
  1484.       
  1485.  kamcc%>1 
  1486. +        
  1487. scrollkamrx($(host%+partpac%))
  1488.         kamcc%=0
  1489.         partpac%=kamcc%
  1490.         block%!0=kammonhdl%
  1491. ,        
  1492.  "Wimp_GetWindowState",,block%
  1493. (        
  1494.  "Wimp_OpenWindow",,block%
  1495. :        
  1496.  FOR clear%=0 TO kamcc%+1:host%?clear%=0:NEXT
  1497.       
  1498. $      
  1499.  kamci%>31 
  1500.  kamci%<127 
  1501.         host%?kamcc%=kamci%
  1502.         kamcc%+=1
  1503.       
  1504.  kamcc%=&C0
  1505. (-2)<1
  1506. scrollkamrx(kampac$)
  1507. block%!0=kammonhdl%
  1508.  "Wimp_GetWindowState",,block%
  1509. r1%=block%!20+4
  1510. &r2%=block%!24-(block%!16-block%!8)
  1511. &r3%=block%!20+(block%!12-block%!4)
  1512. r4%=block%!24
  1513.  &400EB,kammonhdl%,r1%,-32000,r3%,r4%,r1%,-31968
  1514. block%!0=kammonhdl%
  1515. block%!4=r1%
  1516. block%!8=-31996
  1517. block%!12=r3%
  1518. block%!16=block%!8+32
  1519.  "Wimp_UpdateWindow",,block% 
  1520.  more%
  1521.  more%
  1522.  block%!4-block%!20+4,block%!8-r2%-31968
  1523.  kampac$
  1524.  "Wimp_GetRectangle",,block% 
  1525.  more%
  1526. controlcode(text$,counter%)
  1527. btext$,counter%+3,1)="]" 
  1528.  "OS_SerialOp",3,
  1529. btext$,counter%+1,2))
  1530. btext$,counter%+1,2))=13 
  1531. +    
  1532.  "OS_ReadMonotonicTime" 
  1533.  sentcr%
  1534.     testctext%=sentcr%
  1535.  "OS_SerialOp",3,byte%
  1536. counter%+=3
  1537. charout%=counter%
  1538. debugvv(line%,mess$,var)
  1539. mess$=
  1540. mess$,14)
  1541. var$=
  1542. (var)
  1543. debug(line%,mess$+
  1544. (mess$)-
  1545. (var$)," ")+var$)
  1546. debug(line%,mess$)
  1547.  "OS_SetVarVal","db$mess","XX"
  1548.  "OS_SetVarVal","db$mess"+
  1549. (line%),mess$
  1550. tncslow
  1551. mouse_click(block%)
  1552. mousex%=block%!0
  1553. mousey%=block%!4
  1554. buttonstate%=block%!8
  1555. hdl%=block%!12
  1556. iconclick%=block%!16
  1557.  buttonstate% 
  1558.  iconclick%=iconbar% 
  1559. wkeys
  1560.  hdl% 
  1561.  whdl%:
  1562.       
  1563.  amtor%=
  1564.         
  1565. getcall
  1566. -0        
  1567. seticontext(16,amtorhdl%,callsign$)
  1568.       
  1569. /#    
  1570.  wkeyshdl%:
  1571. wkeychange(-1)
  1572.  savehdl%:
  1573.       
  1574.  iconclick% 
  1575.         
  1576.           
  1577. savefile
  1578.         
  1579. 5!          
  1580. create4menu("tnc")
  1581. 6?          
  1582.  "Wimp_CreateMenu",,mb6%,mousex%-100,mousey%+32
  1583.       
  1584. 8     
  1585.  streamhdl%:
  1586. swapstream
  1587.  iconclick%=iconbar% 
  1588.  hdl%=-2 
  1589. menu_setup(mb1%,7)
  1590. menu_setup(mb2%,7)
  1591. menu_setup(mb3%,7)
  1592. menu_setup(mb6%,7)
  1593. menu_setup(mb7%,7)
  1594. create_menu("tnc")
  1595.     menu%=1
  1596. C2    
  1597.  "Wimp_CreateMenu",,mb1%,mousex%-100,416
  1598.  hdl% 
  1599. F6    
  1600.  fkeyshdl%,sfkeyshdl%,cfkeyshdl%,scfkeyshdl%:
  1601.       
  1602. menu_setup(mb4%,7)
  1603.       
  1604. create2menu("Fkeys")
  1605.       menu%=2
  1606. J;      
  1607.  "Wimp_CreateMenu",,mb4%,mousex%-100,mousey%+32
  1608.  ctextshdl%:
  1609.       
  1610. menu_setup(mb4%,7)
  1611. M       
  1612. create2menu("Ctexts")
  1613.       menu%=4
  1614. O;      
  1615.  "Wimp_CreateMenu",,mb4%,mousex%-100,mousey%+32
  1616.  wkeyshdl%:
  1617.       
  1618. menu_setup(mb5%,7)
  1619.       
  1620. create3menu("Wkeys")
  1621.       menu%=3
  1622. T;      
  1623.  "Wimp_CreateMenu",,mb5%,mousex%-100,mousey%+32
  1624.  whdl%:
  1625.       
  1626. menu_setup(mb6%,7)
  1627.       
  1628. create4menu("tnc")
  1629.       menu%=5
  1630. Y;      
  1631.  "Wimp_CreateMenu",,mb6%,mousex%-100,mousey%+32
  1632.  hdl% 
  1633. ]+    
  1634.  infohdl%:
  1635.  "Wimp_CreateMenu",,-1
  1636.  whdl%:
  1637.       
  1638.  amtor%=
  1639.         
  1640. getcall
  1641.         
  1642. getselcall
  1643. b0        
  1644. seticontext(10,amtorhdl%,callsign$)
  1645.       
  1646.       
  1647.  rtty%=
  1648.         
  1649. getcall
  1650. f/        
  1651. seticontext(19,rttyhdl%,callsign$)
  1652.       
  1653.       
  1654.  pactor%=
  1655.         
  1656. getcall
  1657. j0        
  1658. seticontext(3,pactorhdl%,callsign$)
  1659.       
  1660. l,      
  1661.  amtor%=
  1662.  rtty%=
  1663.  pactor%=
  1664. m0        
  1665.  "OS_Byte",129,&FF,&FF 
  1666.  ,pressed%
  1667. n'        
  1668.  pressed%=&FF 
  1669.  pac$<>"" 
  1670.           
  1671. getcall
  1672. p6          
  1673. seticontext(line%,whdl%,"r "+callsign$)
  1674. q)          
  1675. out("r "+callsign$+"[13]")
  1676.           
  1677. scrolltx
  1678.         
  1679.       
  1680.  setuphdl%
  1681.       
  1682.  iconclick% 
  1683.         
  1684. baudchange(1)
  1685.         
  1686. baudchange(-1)
  1687.         
  1688. wordchange(-1)
  1689.         
  1690. wordchange(1)
  1691.         
  1692. protoabort
  1693. |*               
  1694. closewindow(setuphdl%)
  1695.         
  1696. savesetup
  1697. ~*               
  1698. closewindow(setuphdl%)
  1699.          
  1700. usenewdefaults
  1701. +                
  1702. closewindow(setuphdl%)
  1703.       
  1704.  clockhdl%:
  1705. $      
  1706.  iconclick%=3 
  1707. setclock
  1708. 2      
  1709.  iconclick%=4 
  1710. closewindow(clockhdl%)
  1711.  uploadhdl%:
  1712.       
  1713.  iconclick% 
  1714.         
  1715.           upload%=
  1716. '          
  1717. checkicon(11,uploadhdl%)
  1718. .          
  1719.  check%=
  1720.  ctrlz%=
  1721.  ctrlz%=
  1722.           
  1723. upload
  1724.         
  1725. abort
  1726.       
  1727.  ramhdl%:
  1728.       
  1729.  iconclick% 
  1730.         
  1731.           memack%=
  1732. #          
  1733. checkicon(7,ramhdl%)
  1734. .          
  1735.  check%=
  1736.  ctrlz%=
  1737.  ctrlz%=
  1738.           
  1739. memsend
  1740.         
  1741.  5:memack%=
  1742. (               
  1743. closewindow(ramhdl%)
  1744.       
  1745.  savehdl%:
  1746.       
  1747.  iconclick% 
  1748.         
  1749.           
  1750. savefile
  1751. &          
  1752.  "Wimp_CreateMenu",,-1
  1753. !        
  1754.  3:append%=
  1755.  append%
  1756.         
  1757.           
  1758.  spool%=
  1759. !            filter%=
  1760.  filter%
  1761.             
  1762. swapsaveicon
  1763.           
  1764. 0            
  1765. sayerror("Not whilst SPOOLing")
  1766.             
  1767. swapitback
  1768. (            
  1769.  "Wimp_CreateMenu",,-1
  1770.           
  1771. (        
  1772.  "Wimp_CreateMenu",,-1
  1773.       
  1774. -    
  1775.  grabhdl%:
  1776.  iconclick%=1 
  1777. grabtext
  1778. "    
  1779.  wkeyshdl%:
  1780. wkeychange(1)
  1781.  yapphdl%:
  1782.       
  1783.  state$ 
  1784. 0        
  1785.  "R":yapp%=
  1786. closewindow(yapphdl%)
  1787.       
  1788. 3        
  1789.  iconclick%=6 
  1790. yappabort("Abort sent")
  1791.       
  1792.  yappuphdl%:
  1793.       
  1794.  state$ 
  1795. 0        
  1796.  "S":
  1797.  iconclick%=6 
  1798. yappupsendab
  1799.         
  1800.  "ST","Abort":
  1801. &          
  1802. closewindow(yappuphdl%)
  1803.           state$="S"
  1804.       
  1805. 3        
  1806.  iconclick%=6 
  1807. yappabort("Abort sent")
  1808.       
  1809.  pactorhdl%:
  1810.       
  1811.  iconclick% 
  1812.         
  1813.           
  1814. out("[03]x[13]")
  1815.            
  1816. out("pactor[13]")
  1817. /          
  1818. seticontext(8,pactorhdl%,"Link")
  1819.         
  1820.           
  1821. out("[03]x[13]")
  1822.           
  1823. out("ptl[13]")
  1824. /          
  1825. seticontext(8,pactorhdl%,"Link")
  1826. %        
  1827.  2:longpath%=
  1828.  longpath%
  1829.         
  1830. /          
  1831. geticontext(4,pactorhdl%,chirp$)
  1832.           
  1833. chirp$) 
  1834. G            
  1835.  "Auto":
  1836. out("[03]1"):
  1837. seticontext(4,pactorhdl%,"100")
  1838. F            
  1839.  "100":
  1840. out("[03]2"):
  1841. seticontext(4,pactorhdl%,"200")
  1842. G            
  1843.  "200":
  1844. out("[03]0"):
  1845. seticontext(4,pactorhdl%,"Auto")
  1846.           
  1847.         
  1848. out("[03]T")
  1849.         
  1850. out("[03]E")
  1851.         
  1852. /          
  1853. geticontext(8,pactorhdl%,state$)
  1854.           
  1855. state$) 
  1856.             
  1857.  "Link":
  1858. #              
  1859. out("[03]x[13]")
  1860. 2              
  1861. geticontext(3,pactorhdl%,call$)
  1862. !              
  1863. out("pactor ")
  1864. +              
  1865.  longpath%=
  1866. out("!")
  1867. $              
  1868. out(call$+"[13]")
  1869. *              
  1870. clearicon(pactorhdl%,1)
  1871. (              
  1872. seticon(pactorhdl%,0)
  1873. 5              
  1874. seticontext(8,pactorhdl%,"Unlink")
  1875.             
  1876.  "Unlink":
  1877.               
  1878. out("[03]d")
  1879. 3              
  1880. seticontext(8,pactorhdl%,"Link")
  1881.           
  1882.        
  1883.  amtorhdl%:
  1884.       
  1885.  iconclick% 
  1886.         
  1887. amtorshift
  1888.         
  1889. amtormark
  1890.         
  1891. amtorspace
  1892.         
  1893. out("[03]R")
  1894.         
  1895. out("[03]I")
  1896.         
  1897. out("[03]T")
  1898. "        
  1899. out("[03]x[13]")
  1900. #                
  1901. out("fec[13]")
  1902. "        
  1903. out("[03]X[13]")
  1904. "                
  1905. out("am[13]")
  1906. "        
  1907. out("[03]X[13]")
  1908. !                
  1909. out("l[13]")
  1910.         
  1911. arqcall
  1912.       
  1913.  rttyhdl%:
  1914.       
  1915.  iconclick% 
  1916.         
  1917. speedchange(1)
  1918. !        
  1919. speedchange(-1)
  1920.         
  1921. rttyshift
  1922.         
  1923. rttymark
  1924.         
  1925. out("[03]I")
  1926. "        
  1927. out("[03]R[13]")
  1928.         
  1929. command
  1930.                 
  1931. amtor
  1932.         
  1933. out("[03]T")
  1934.         
  1935. rttyspace
  1936.       
  1937.  cwhdl%:
  1938.       
  1939.  iconclick% 
  1940.         
  1941. cwspeed(1)
  1942.         
  1943. cwspeed(-1)
  1944.         
  1945.         
  1946. out("[03]u")
  1947.                lock%=
  1948. 2               
  1949. seticontext(5,cwhdl%,"LockTX")
  1950.         
  1951. out("[03]r")
  1952.         
  1953. out("[03]t")
  1954.       
  1955.      
  1956.  streamhdl%:
  1957. swapstream
  1958.  yapphdl%:
  1959.       
  1960.  iconclick% 
  1961. 9        
  1962. seticontext(5,hdl%,"RECEIVE READY sent")
  1963. #               
  1964. out("[06][01]")
  1965.          
  1966. out("[24][00]")
  1967. %               
  1968. closewindow(hdl%)
  1969.                yapp%=
  1970.       
  1971.  iconclick%=iconbar% 
  1972.  hdl%=-2 
  1973.     block%!0=whdl%
  1974. (    
  1975.  "Wimp_GetWindowState",,block%
  1976.     block%!28=-1
  1977. $    
  1978.  "Wimp_OpenWindow",,block%
  1979. B    
  1980.  "Wimp_SetCaretPosition",whdl%,line%,xsave%,ysave%,-1,-1
  1981.  16,64:
  1982.  hdl% 
  1983. 0    
  1984.  savehdl%,grabhdl%,yapphdl%:
  1985. drag(hdl%)
  1986. getcall
  1987. block%!0=whdl%
  1988.  "Wimp_GetWindowState",,block%
  1989. "#x%=mousex%-(block%!4-block%!20)
  1990. #$y%=mousey%-(block%!16-block%!24)
  1991. charx%=
  1992. ((x%-4)/16)+1
  1993. liney%=
  1994. ((31996+y%)/32)+1
  1995. check%=0
  1996. (5  space$=
  1997. line$(sline%+1-liney%),charx%-check%,1)
  1998.   check%+=1
  1999.  charx%-check%=-1 
  2000.  space$=" "
  2001. +8callsign$=
  2002. line$(sline%+1-liney%),charx%-check%+2,6)
  2003. space%=
  2004. callsign$," ",2)
  2005.  space%<>0 
  2006.  callsign$=
  2007. callsign$,space%-1)
  2008. getselcall
  2009. sel1$=
  2010. callsign$,1)
  2011. (callsign$) 
  2012. 4,    selcall$=sel1$+sel1$+
  2013. callsign$,3,2)
  2014. 6!    
  2015. callsign$,2,1))<58 
  2016. 7(      selcall$=sel1$+
  2017. callsign$,3,3)
  2018. 8        
  2019. 92      selcall$=
  2020. callsign$,1,2)+
  2021. callsign$,4,5)
  2022. :        
  2023.  sel1$="G" 
  2024. =2      selcall$=
  2025. callsign$,1,1)+
  2026. callsign$,4,6)
  2027. >        
  2028. ?2      selcall$=
  2029. callsign$,1,2)+
  2030. callsign$,5,6)
  2031. @        
  2032.   selcall$=""
  2033. seticontext(25,amtorhdl%,selcall$)
  2034. savefile
  2035.  spool%=
  2036. geticontext(0,savehdl%,spoolfile$)
  2037. spoolok(spoolfile$)
  2038. endspool
  2039. swapsaveicon
  2040.  spool% 
  2041.  filter%=
  2042. T+      
  2043. swapicon(savehdl%,2,"sfile_56c")
  2044. U        
  2045. V+      
  2046. swapicon(savehdl%,2,"sfile_56d")
  2047. W        
  2048.  filter%=
  2049. Z+      
  2050. swapicon(savehdl%,2,"sfile_fff")
  2051. [        
  2052. \+      
  2053. swapicon(savehdl%,2,"sfile_ffd")
  2054. ]        
  2055. swapitback
  2056.  filter%=
  2057. clearicon(savehdl%,4)
  2058. seticon(savehdl%,4)
  2059. swapstream
  2060.  icon%= 0 
  2061. clearicon(hdl%,icon%)
  2062.  icon%
  2063. seticon(hdl%,iconclick%)
  2064.  iconclick% 
  2065. out("|a"):
  2066. streamadjust("A")
  2067. out("|b"):
  2068. streamadjust("B")
  2069. out("|c"):
  2070. streamadjust("C")
  2071. out("~a"):
  2072. streamadjust("A")
  2073. out("~b"):
  2074. streamadjust("B")
  2075. out("~c"):
  2076. streamadjust("C")
  2077. streamadjust(stream$)
  2078. out("[03]c[13]")
  2079. tncslow
  2080. getstream$=""
  2081.  &57,4
  2082. ,getstream%
  2083. ~)  getstream$=getstream$+
  2084. (getstream%)
  2085.  getstream%=13
  2086. call$=
  2087. getstream$,12)
  2088. space%=
  2089. call$,"to ")
  2090. call$=
  2091. call$,space%+3)
  2092. getstream$,"INVALID")>0 
  2093. seticontext(iconclick%,streamhdl%,"Unused"):
  2094. getstream$,"DISC")>0 
  2095.  call$=stream$ 
  2096. out("k[13]")
  2097. seticontext(iconclick%,streamhdl%,call$)
  2098. seticontext(icon%,hdl%,icontxt$)
  2099. block%!0=hdl%
  2100. block%!4=icon%
  2101.  &400CE,,block%
  2102. textpointer%=block%!28
  2103. $(textpointer%)=icontxt$
  2104. block%!8=0
  2105. block%!12=0
  2106.     *FX19
  2107.  &400CD,,block%
  2108. setupclock
  2109.  yapp%=
  2110.  yappup%=
  2111. block%!0=clockhdl%
  2112.  "Wimp_GetWindowState",,block%
  2113.  "Wimp_OpenWindow",,block%
  2114. clock%=
  2115. /*SET Sys$DateFormat %dy-%mn-%yr %24:%mi:%se
  2116.  "OS_ReadMonotonicTime" 
  2117.  delay%
  2118. duration%=delay%
  2119. checkclock
  2120. checkclock
  2121. ?workarea%=3
  2122.  "OS_Word",14,workarea%
  2123.  "OS_ConvertStandardDateAndTime",workarea%,workarea%,256 
  2124.  arctime$
  2125. seticontext(2,clockhdl%,arctime$)
  2126. delay%+=100
  2127.  delay%=duration%+2000 
  2128. closewindow(clockhdl%)
  2129. setclock
  2130. **SET Sys$DateFormat %yr%mn%dy%24%mi%se
  2131. datetime(settime$)
  2132.  "OS_SerialOp",3,3
  2133. tncslow
  2134. "tnctime$="day "+settime$+
  2135. out(tnctime$)
  2136. closewindow(clockhdl%)
  2137. datetime(
  2138.  arctime$)
  2139. ?workarea%=3
  2140.  "OS_Word",14,workarea%
  2141.  "OS_ConvertStandardDateAndTime",workarea%,workarea%,256 
  2142.  arctime$
  2143. keypress
  2144. 6,129,143,255
  2145. ,key%
  2146.  key%=255 
  2147.  kam%=
  2148. &57,2,50
  2149. out("d[13]")
  2150. out("[03]")
  2151. out("d[13]")
  2152. 6,129,211,255
  2153. ,key%
  2154. key%=255 
  2155. &57,2,50:
  2156. hdl%=block%!0
  2157. key%=block%!24
  2158.  hdl% 
  2159.  whdl%:
  2160.   line%=block%!4
  2161.  key% 
  2162. out("[07]"):
  2163. <    
  2164.  0,1,2,3,4,5,6,8,9,10,11,12:
  2165.  "OS_SerialOp",3,key%
  2166. B    
  2167.  14,15,16,17,18,19,20,21,23,24,25:
  2168.  "OS_SerialOp",3,key%
  2169.       
  2170.  hdl% 
  2171.         
  2172.  whdl%:
  2173. -          
  2174. geticontext(line%,whdl%,text$)
  2175.           
  2176. scrolltx
  2177.           caretpos%=0
  2178. 6          
  2179.  packet%=
  2180. out(text$) 
  2181. out("[13]")
  2182. 1          
  2183.  "OS_ReadMonotonicTime" 
  2184.  sentcr%
  2185.            testctext%=sentcr%
  2186.         
  2187.  savehdl%:
  2188. savecr
  2189.         
  2190.  grabhdl%:
  2191. grabcr
  2192.       
  2193. breakline
  2194. out("[26][13]")
  2195. 4      
  2196.  cw%=
  2197.  rtty%=
  2198.  amtor%=
  2199.  pactor%=
  2200.         
  2201. command
  2202.         packet%=
  2203.       
  2204. 0    
  2205.  384:
  2206.  "Wimp_GetCaretPosition",,block%
  2207.       xsave%=block%!8
  2208.       ysave%=block%!12
  2209.       block%!0=grabhdl%
  2210. )      
  2211.  "Wimp_GetWindowInfo",,block%
  2212. &      
  2213.  "Wimp_OpenWindow",,block%
  2214. +      
  2215. geticontext(0,grabhdl%,icontxt$)
  2216. ,      
  2217.  "Wimp_GetCaretPosition",,block%
  2218. S      
  2219.  "Wimp_SetCaretPosition",grabhdl%,0,block%!8,block%!12,-1,
  2220. (icontxt$)-1
  2221. 6    
  2222.  385,386,387,388,389,390,391,392,393,458,459:
  2223.       
  2224.  key% 
  2225.         
  2226.  458,459:key%-=64
  2227.       
  2228.       
  2229. fkeycode(key%,1)
  2230. 6    
  2231.  401,402,403,404,405,406,407,408,409,474,475:
  2232.       
  2233.  key% 
  2234. :        
  2235.  401,402,403,404,405,406,407,408,409:key%-=16
  2236.         
  2237.  474,475:key%-=80
  2238.       
  2239.       
  2240. fkeycode(key%,2)
  2241. 6    
  2242.  417,418,419,420,421,422,423,424,425,490,491:
  2243.       
  2244.  key% 
  2245. :        
  2246.  417,418,419,420,421,422,423,424,425:key%-=32
  2247.         
  2248.  490,491:key%-=96
  2249.       
  2250.       
  2251. fkeycode(key%,3)
  2252. 6    
  2253.  433,434,435,436,437,438,439,440,441,442,443:
  2254.       
  2255.  key% 
  2256. :        
  2257.  433,434,435,436,437,438,439,440,441:key%-=48
  2258. P        
  2259.  442:
  2260. 6,129,159,255
  2261. ,tab%:
  2262.  tab%=255 
  2263.  "Wimp_ProcessKey",key%:
  2264.         
  2265.  506,507:key%-=112
  2266.       
  2267.       
  2268. fkeycode(key%,4)
  2269. pagehome
  2270.  398:
  2271. cursor(1)
  2272.  399:
  2273. cursor(-1)
  2274.  414:
  2275. page(-1)
  2276.  415:
  2277. page(1)
  2278.  430,431:
  2279. pagehome
  2280.  461:
  2281.  Insert
  2282. !    
  2283.  "Wimp_ProcessKey",key%
  2284.  ctextshdl%:
  2285.     icon%=block%!4
  2286.  icon% 
  2287. l      
  2288.  1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24:icontxt$=ctexts$(icon%):icon%+=25
  2289. p      
  2290.  26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48:icon%-=24:icontxt$=call$(icon%)
  2291. ,      
  2292.  49:icon%=1:icontxt$=call$(icon%)
  2293.         
  2294. F    
  2295.  "Wimp_SetCaretPosition",ctextshdl%,icon%,,,-1,
  2296. (icontxt$)-1
  2297.  savehdl%:
  2298. savecr
  2299.  grabhdl%:
  2300. grabcr
  2301.  "Wimp_ProcessKey",key%
  2302. savecr
  2303. geticontext(0,savehdl%,spoolfile$)
  2304. spoolok(spoolfile$)
  2305. closewindow(savehdl%)
  2306. grabcr
  2307. geticontext(0,grabhdl%,grabfile$)
  2308. grabtext
  2309. fkeycode(keycode%,set%)
  2310. (!key$=fkey$(set%,keycode%-384)
  2311. (key$),"[13]")>0 
  2312.   key$=
  2313. key$,
  2314. (key$)-5)
  2315. out(key$+"[13]")
  2316. seticontext(line%,whdl%,key$)
  2317. scrolltx
  2318. out(key$)
  2319. seticontext(line%,whdl%,key$)
  2320. longfkey
  2321. cursor(move%)
  2322.  "Wimp_GetCaretPosition",,block%
  2323. line%=block%!4+move%
  2324.  line%=4 
  2325.  line%=0
  2326.  line%=-1 
  2327.  line%=3
  2328.  "Wimp_SetCaretPosition",whdl%,line%,block%!8,block%!12,-1,-1
  2329. scrollreq
  2330.  block%!36 
  2331.  -2,+2:
  2332. page(block%!36/2)
  2333.  -1,1:
  2334. page(block%!36*.05)
  2335. page(updown%)
  2336. block%!0=whdl%
  2337.  "Wimp_GetWindowState",,block%
  2338. I%block%!24=block%!24+(updown%*640)
  2339.  "Wimp_OpenWindow",,block%
  2340. pagehome
  2341. block%!0=whdl%
  2342.  "Wimp_GetWindowState",,block%
  2343. P"flip%=block%!16-block%!8-32000
  2344.  block%!24<flip% 
  2345.  block%!24=flip% 
  2346.  block%!24=flip%-160
  2347.  "Wimp_OpenWindow",,block%
  2348. breakline
  2349. geticontext(line%,whdl%,text$)
  2350. text$))
  2351. (22)+
  2352. (13))
  2353. scrolltx
  2354.  "Wimp_GetCaretPosition",,block%
  2355.  block%!0=whdl% 
  2356.   line%=block%!4
  2357.  block%!20>maxpac% 
  2358.  line%>-1 
  2359.  packet%=
  2360. b,      
  2361. geticontext(line%,whdl%,partpac$)
  2362.       endchar%=maxpac%+2
  2363.       
  2364.         endchar%-=1
  2365. f*        endchar$=
  2366. partpac$,endchar%,1)
  2367. g%      
  2368.  endchar$=" " 
  2369.  endchar%=1
  2370. h+      
  2371.  endchar%=1 
  2372.  endchar%=maxpac%+2
  2373. i$      pac$=
  2374. partpac$,endchar%-1)
  2375.       
  2376. out(pac$+"[13]")
  2377.       
  2378. scrolltx
  2379.       
  2380.  line%=4 
  2381.         line%-=1
  2382. n,        
  2383. seticontext(line%-1,whdl%,pac$)
  2384. o0        pac$=
  2385. partpac$,(maxpac%+2-endchar%))
  2386. p*        
  2387. seticontext(line%,whdl%,pac$)
  2388. qJ        
  2389.  "Wimp_SetCaretPosition",whdl%,line%,,,-1,maxpac%+1-endchar%
  2390.       
  2391. s        
  2392. t(      
  2393.  amtor%=
  2394.  rtty%=
  2395.  cw%=
  2396. u/        
  2397. geticontext(line%,whdl%,lastchar$)
  2398.         
  2399. lastchar$,2))
  2400.         
  2401. scrolltx
  2402.       
  2403. y        
  2404. diddle
  2405.  "Wimp_GetCaretPosition",,block2%
  2406.  block2%!0=whdl% 
  2407.  block2%!4>-1 
  2408.   line%=block2%!4
  2409.   newcaretpos%=block2%!20
  2410.  newcaretpos%>caretpos% 
  2411. 1    
  2412. geticontext(block2%!4,whdl%,diddlechar$)
  2413. 0    
  2414.  diddlechar%=caretpos%+1 
  2415.  newcaretpos%
  2416. 3      diddleout%=
  2417. diddlechar$,diddlechar%,1))
  2418. "      
  2419.  newcaretpos%>maxpac% 
  2420.         
  2421.  diddleout%=32 
  2422.           diddleout%=13
  2423.           
  2424. scrolltx
  2425.         
  2426.         
  2427.  newcaretpos%>71 
  2428. +          
  2429.  "OS_SerialOp",3,diddleout%
  2430. #          
  2431.  "OS_SerialOp",3,13
  2432.           
  2433. scrolltx
  2434.         
  2435.       
  2436. )        
  2437.  "OS_SerialOp",3,diddleout%
  2438.       
  2439.  diddlechar%
  2440.  newcaretpos%<caretpos% 
  2441. '    deletes%=caretpos%-newcaretpos%
  2442.  erase%=1 
  2443.  deletes%
  2444.       
  2445. out("[08]")
  2446.  erase%
  2447. caretpos%=newcaretpos%
  2448. updatecaret
  2449.  &400D3,,block%:
  2450.  block%!0=whdl% 
  2451.  "FX19":
  2452.  &400D2,whdl%,block%!4,block%!8,block%!12,block%!16 
  2453.  flagtweak%,block%!20
  2454. againsave
  2455.  spool%=
  2456. sayerror("Already spooling")
  2457. geticontext(0,savehdl%,icontxt$)
  2458. spoolok(icontxt$)
  2459. closewindow(savehdl%)
  2460. drag(hdl%)
  2461.  hdl%=grabhdl% 
  2462.  grab%=
  2463. !block%=hdl%
  2464.  "Wimp_GetWindowState",,block%
  2465. ox%=block%!4-block%!20
  2466. oy%=block%!16-block%!24
  2467. block%!4=2
  2468.  "Wimp_GetIconState",,block%
  2469. !block%=hdl%
  2470. block%!4=5
  2471. block%!8=ox%+block%!8
  2472. block%!12=oy%+block%!12
  2473. block%!16=ox%+block%!16
  2474. block%!20=oy%+block%!20
  2475. block%!24=0:block%!28=0
  2476. block%!32=&7FFFFFFF
  2477. block%!36=&7FFFFFFF
  2478.  "Wimp_DragBox",,block%
  2479. dragsave
  2480.  grab%=
  2481.  hdl%=grabhdl%
  2482.  spool%=
  2483.  hdl%=savehdl%
  2484.  yapp%=
  2485.  hdl%=yapphdl%
  2486. geticontext(0,hdl%,icontxt$)
  2487. icontxt$,".")<>0 
  2488.   getfile$=icontxt$
  2489.   chars%=1
  2490. "    getfile$=
  2491. icontxt$,chars%)
  2492.     chars%+=1
  2493. getfile$,".")<>0 
  2494.  chars%=11
  2495.   file$=
  2496. getfile$,chars%-2)
  2497.   file$=icontxt$
  2498.  "Wimp_GetPointerInfo",,block%
  2499. block%!20=block%!12
  2500. block%!24=block%!16
  2501. block%!28=block%!0
  2502. block%!32=block%!4
  2503. block%!36=64
  2504. block%!0=64
  2505. block%!12=0
  2506. block%!16=1
  2507. block%!40=&FFF
  2508. $(block%+44)=file$
  2509.  "Wimp_SendMessage",17,block%,block%!20,block%!24
  2510.  grab%=
  2511.  grabfile$=file$
  2512.  spool%=
  2513.  spoolfile$=file$
  2514.  yapp%=
  2515.  yappfile$=file$
  2516. quickspool
  2517.  spool% 
  2518. :spoolfile$=deffile$
  2519. %             
  2520. spoolok(spoolfile$)
  2521. 4             
  2522. seticontext(0,savehdl%,spoolfile$)
  2523. endspool
  2524. endspool
  2525. seticontext(5,savehdl%,
  2526. #spy%))
  2527. #spy%
  2528.  filter%=
  2529.  filetype%=&fff 
  2530.  filetype%=&ffd
  2531.  "OS_File",18,spoolfile$,filetype%
  2532. twiddletick
  2533. spoolok(spoolfile$)
  2534.  spoolfile$="" 
  2535.  spoolfile$=deffile$
  2536.  filter%=
  2537.  filetype%=&56c 
  2538.  filetype%=&56d
  2539.  append%=
  2540.  "OS_File",6,(spoolfile$)
  2541.   spy%=
  2542. (spoolfile$)
  2543.  "OS_File",18,spoolfile$,filetype%
  2544. seticontext(5,savehdl%,"0")
  2545.  "XOS_File",13,spoolfile$,0 
  2546.  exists%
  2547.  exists%=1 
  2548.     spy%=
  2549. (spoolfile$)
  2550. #spy%=
  2551. #spy%
  2552.     spy%=
  2553. (spoolfile$)
  2554.  "OS_File",18,spoolfile$,filetype%
  2555. twiddletick
  2556. twiddletick
  2557. spool%=
  2558.  spool%
  2559.  spool% 
  2560. :spooltick%=1
  2561. /            
  2562. seticontext(1,savehdl%,"Stop")
  2563. :spooltick%=0
  2564. -            
  2565. seticontext(1,savehdl%,"OK")
  2566. swapsaveicon
  2567. scrolltx
  2568.  line%<botline% 
  2569.  "Wimp_GetCaretPosition",,block%
  2570.   line%+=1
  2571.  "Wimp_SetCaretPosition",whdl%,line%,block%!8,block%!12,-1,0
  2572.  line%=1 
  2573.  botline%
  2574. '    
  2575. geticontext(line%,whdl%,text$)
  2576. )    
  2577. seticontext(line%-1,whdl%,text$)
  2578.  line%
  2579. seticontext(botline%,whdl%,
  2580. (13))
  2581.  "Wimp_GetCaretPosition",,block%
  2582.  "Wimp_SetCaretPosition",whdl%,botline%,block%!8,block%!12,-1,0
  2583.  caret%=
  2584. updatecaret
  2585. fkeys(fkeyset%)
  2586.  fkeyset% 
  2587.  0:hdl%=fkeyshdl%:title$="Fkeys"
  2588.  1:hdl%=sfkeyshdl%:title$="Shift/fkeys"
  2589.  2:hdl%=cfkeyshdl%:title$="Ctrl/fkeys"
  2590.  3:hdl%=scfkeyshdl%:title$="C/Sh/fkeys"
  2591. block%!0=hdl%
  2592.  "Wimp_GetWindowInfo",,block%
  2593. block%!28=-1
  2594. $(block%!76)=title$
  2595.  "Wimp_OpenWindow",,block%
  2596. loadkeyfile(file$)
  2597.  file$ 
  2598.  "fkeys":hdl%=fkeyshdl%
  2599.  "sfkeys":hdl%=sfkeyshdl%
  2600.  "cfkeys":hdl%=cfkeyshdl%
  2601.  "scfkeys":hdl%=scfkeyshdl%
  2602. <"file$="<tnc$DIR>.FKeys."+file$
  2603.  "OS_File",5,file$ 
  2604.  type%
  2605.  type% 
  2606.     icon%=1
  2607.     channel%=
  2608. (file$)
  2609.     nokey%=
  2610. D        
  2611.       
  2612.       key$=
  2613. #(channel%)
  2614. G'      
  2615. seticontext(icon%,hdl%,key$)
  2616.       icon%+=1
  2617. I#      
  2618. #(channel%) 
  2619.  nokey%=
  2620.  nokey%=
  2621.  icon%=12
  2622. #(channel%)
  2623. updatekeys
  2624. updatekeys
  2625. updatekeys2(fkeyshdl%,1)
  2626. updatekeys2(sfkeyshdl%,2)
  2627. updatekeys2(cfkeyshdl%,3)
  2628. updatekeys2(scfkeyshdl%,4)
  2629. updatekeys2(hdl%,set%)
  2630.  icon% = 1 
  2631. geticontext(icon%,hdl%,fkey$(set%,icon%))
  2632.  icon%
  2633. seticontext(icon%,hdl%,"Not programmable")
  2634. savefkeys
  2635. savefkeys2("fkeys",fkeyshdl%,1)
  2636. savefkeys2("sfkeys",sfkeyshdl%,2)
  2637. savefkeys2("cfkeys",cfkeyshdl%,3)
  2638. savefkeys2("scfkeys",scfkeyshdl%,4)
  2639. savefkeys2(file$,hdl%,set%)
  2640. g"file$="<tnc$DIR>.Fkeys."+file$
  2641.  "OS_File",6,(file$)
  2642. channel%=
  2643. (file$)
  2644.  icon%=1 
  2645.   nextbyte%=1
  2646. geticontext(icon%,hdl%,fkey$(set%,icon%))
  2647. n1    keystore$=
  2648. fkey$(set%,icon%),nextbyte%,1)
  2649. o+    
  2650.  keystore$=
  2651. (13) 
  2652.  keystore$=
  2653. #channel%,keystore$;
  2654.     nextbyte%+=1
  2655.  nextbyte%>
  2656. (fkey$(set%,icon%))
  2657.  icon%
  2658. #channel%
  2659.  "OS_File",18,file$,&FFF
  2660. updatekeys
  2661. getwkeys
  2662. wkeys%=0
  2663. wkeys%+=1
  2664. }Dloadwkeys%=
  2665. loadwkeyfile("<tnc$DIR>.WimpKeys."+
  2666. (wkeys%),wkeys%)
  2667.  loadwkeys%=
  2668. loadwkeyfile(file$,wkeyset%)
  2669.  "OS_File",5,file$ 
  2670.  type%
  2671.  type% 
  2672.     icon%=1
  2673.     channel%=
  2674. (file$)
  2675.     nokey%=
  2676.         
  2677.       byte1%=
  2678. #(channel%)
  2679.       
  2680.  byte1%=124 
  2681.         
  2682.            byte%=
  2683. #(channel%)
  2684. 0        
  2685. #(channel%) 
  2686.  byte%=10 
  2687.  byte%=13
  2688.       
  2689.  byte1%<>124
  2690. #channel%=
  2691. #channel%-1
  2692.     wkey%=1
  2693.         
  2694. /      
  2695. settext(wimpkeydef$(wkeyset%,wkey%))
  2696. 0      
  2697. settext(wimpkeyicon$(wkeyset%,wkey%))
  2698.       wkey%+=1
  2699.  nokey%=
  2700.  wkey%>9
  2701. #(channel%)
  2702.     =
  2703. settext(
  2704.  tkey$)
  2705. tkey$=""
  2706.   byte%=
  2707. #(channel%)
  2708.   tkey$=tkey$+
  2709. (byte%)
  2710. #(channel%) 
  2711.  byte%=10 
  2712.  byte%=13
  2713. #(channel%) 
  2714.  nokey%=
  2715. tkey$=
  2716. tkey$)+
  2717. wkeys
  2718. block%!0=wkeyshdl%
  2719.  "Wimp_GetWindowState",,block%
  2720. block%!28=-1
  2721.  "Wimp_OpenWindow",,block%
  2722.  icon%=1 
  2723. seticontext(0,wkeyshdl%,
  2724. (wkeyset%))
  2725. seticontext(icon%,wkeyshdl%,
  2726. wimpkeyicon$(wkeyset%,icon%)))
  2727.  icon%
  2728. wkeychange(step%)
  2729. geticontext(0,wkeyshdl%,wkeyset$)
  2730. wkeyset%=
  2731. (wkeyset$)
  2732.  iconclick% 
  2733.   wkeyset%+=step%
  2734.  wkeyset%>numwkeys% 
  2735.  wkeyset%=1
  2736.  wkeyset%<1 
  2737.  wkeyset%=numwkeys%
  2738.  icon%=1 
  2739. -    
  2740. seticontext(0,wkeyshdl%,
  2741. (wkeyset%))
  2742. D    
  2743. seticontext(icon%,wkeyshdl%,
  2744. wimpkeyicon$(wkeyset%,icon%)))
  2745.  icon%
  2746. wimpkeydef$(wkeyset%,iconclick%)))
  2747.  step%=-1 
  2748. closewindow(hdl%)
  2749. ctexts
  2750.  "OS_File",5,"<tnc$DIR>.ctexts" 
  2751.  type%
  2752.  type% 
  2753.  0,2:
  2754.     icon%=1
  2755. &    channel%=
  2756. ("<tnc$DIR>.ctexts")
  2757.     call%=1
  2758.         
  2759. #      call$(call%)=
  2760. #(channel%)
  2761. 5      
  2762. seticontext(call%,ctextshdl%,call$(call%))
  2763.       call%+=1
  2764.  call%>24
  2765.     ctext%=1
  2766.         
  2767. &      ctexts$(ctext%)=
  2768. #(channel%)
  2769. <      
  2770. seticontext(ctext%+25,ctextshdl%,ctexts$(ctext%))
  2771.       ctext%+=1
  2772.  ctext%>24
  2773. #(channel%)
  2774. connected
  2775.  upload%=
  2776.  yapp%=
  2777.  yappup%=
  2778. *callpos%=
  2779. pac$,"*** CONNECTED to ")+17
  2780.  callpos%=17 
  2781.  "OS_ReadMonotonicTime" 
  2782.  sentcr%
  2783.  sentcr%<testctext%+3000 
  2784. streampos%=
  2785. pac$,"|")
  2786.  streampos%>0 
  2787. ctexttwo(streampos%,124)
  2788. streampos%=
  2789. pac$,"~")
  2790.  streampos%>0 
  2791. ctexttwo(streampos%,126)
  2792. callin$=
  2793. pac$,callpos%,6)
  2794. callin$)="-" 
  2795. callin$)=" " 
  2796.   callin$=
  2797. callin$,5)
  2798.   callin$=
  2799. callin$,6)
  2800. call%=0
  2801. call$=""
  2802.   call%+=1
  2803.   call$=call$(call%)
  2804.  call%=24 
  2805.  call$=callin$
  2806.  call%<25 
  2807.  ctextstick%=1 
  2808. out(ctexts$(call%)+
  2809. (13))
  2810.  call%=25 
  2811.  call$(24)="OTHER" 
  2812. out(ctexts$(24)+
  2813. (13))
  2814. ctexttwo(streampos%,port%)
  2815. $stream%=
  2816. pac$,streampos%+1,1))
  2817.  stream%>64 
  2818.  stream%<91 
  2819. (port%)+
  2820. (stream%))
  2821. savectexts
  2822. file$="<tnc$DIR>.ctexts"
  2823.  "OS_File",6,(file$)
  2824. channel%=
  2825. (file$)
  2826.  icon%=1 
  2827.  icon%<25 
  2828. -    
  2829. geticontext(icon%,hdl%,call$(icon%))
  2830. &    keystore$=
  2831. call$(icon%))+
  2832. 4    
  2833. geticontext(icon%+1,hdl%,ctexts$(icon%-25))
  2834. +    keystore$=
  2835. ctexts$(icon%-25))+
  2836.  keystore$=
  2837. (13) 
  2838.  keystore$=
  2839. #channel%,keystore$;
  2840.  icon%
  2841. #channel%
  2842. updatectexts
  2843. updatectexts
  2844.  icon%=1 
  2845.  icon%<25 
  2846. -    
  2847. geticontext(icon%,hdl%,call$(icon%))
  2848.     capchar$=""
  2849.     caps$=""
  2850.     caps%=1
  2851.         
  2852. )      capchar$=
  2853. call$(icon%),caps%,1)
  2854. 7      
  2855. (capchar$)>96 
  2856.  capchar$=
  2857. (capchar$)-32)
  2858.       caps$+=capchar$
  2859.       caps%+=1
  2860. (capchar$)<32
  2861.     call$(icon%)=
  2862. caps$)
  2863. 3    
  2864. seticontext(icon%,ctextshdl%,call$(icon%))
  2865. 4    
  2866. geticontext(icon%+1,hdl%,ctexts$(icon%-24))
  2867. -    ctexts$(icon%-24)=
  2868. ctexts$(icon%-24))
  2869.  icon%
  2870. pactor
  2871. packet%=
  2872.  amtor%=
  2873.  rtty%=
  2874.  cw%=
  2875. (3)+"X[13]")
  2876.  pactor%=
  2877. out("ptl[13]")
  2878.   pactor%=
  2879. block%!0=pactorhdl%
  2880.  "Wimp_GetWindowState",,block%
  2881.  "Wimp_OpenWindow",,block%
  2882. seticon(pactorhdl%,1)
  2883. seticontext(8,pactorhdl%,"Link")
  2884. amtor
  2885. packet%=
  2886. maxpac%=62
  2887.  pactor%=
  2888.  rtty%=
  2889.  cw%=
  2890. (3)+"X[13]")
  2891.  amtor%=
  2892.     6)  
  2893. geticontext(2,amtorhdl%,getshift$)
  2894.  getshift$ 
  2895.  "170":shift%=1
  2896.  "425":shift%=2
  2897.  "850":shift%=3
  2898.  "M":shift%=4
  2899.     =*  
  2900. out("SHIFT "+shift$(shift%)+"[13]")
  2901. out("l[13]")
  2902.   amtor%=
  2903. block%!0=amtorhdl%
  2904.  "Wimp_GetWindowState",,block%
  2905.  "Wimp_OpenWindow",,block%
  2906. seticon(amtorhdl%,21)
  2907. arqcall
  2908. geticontext(25,amtorhdl%,arqcall$)
  2909. (arqcall$)<5 
  2910. out("[03]X[13]")
  2911. out("am "+arqcall$+"[13]")
  2912. clearicon(amtorhdl%,17)
  2913. clearicon(amtorhdl%,21)
  2914. seticon(amtorhdl%,19)
  2915. packet%=
  2916. maxpac%=62
  2917.  pactor%=
  2918.  amtor%=
  2919.  cw%=
  2920. (3)+"X[13]")
  2921.  rtty%=
  2922.     V(  
  2923. geticontext(6,rttyhdl%,getshift$)
  2924.  getshift$ 
  2925.  "170":shift%=1
  2926.  "425":shift%=2
  2927.  "850":shift%=3
  2928.  "M":shift%=4
  2929.     ]*  
  2930. out("SHIFT "+shift$(shift%)+"[13]")
  2931.     ^-  
  2932. geticontext(5,rttyhdl%,speed$(speed%))
  2933.     _&  
  2934. out("r "+speed$(speed%)+"[13]")
  2935.   rtty%=
  2936. block%!0=rttyhdl%
  2937.  "Wimp_GetWindowState",,block%
  2938.  "Wimp_OpenWindow",,block%
  2939. speedchange(rttystep%)
  2940. speed%=speed%+rttystep%
  2941.  speed%=0 
  2942.  speed%=9
  2943.  speed%=10 
  2944.  speed%=1
  2945. seticontext(5,rttyhdl%,speed$(speed%))
  2946. (48+speed%))
  2947. rttyshift
  2948. shift%+=1
  2949.  shift% 
  2950.     r*  
  2951. updateicon(rttyhdl%,7,&702F13D)
  2952.     s-         
  2953. updateicon(rttyhdl%,8,&702F13D)
  2954.     t/         
  2955. updateicon(rttyhdl%,12,&C701903D)
  2956.     u/         
  2957. updateicon(rttyhdl%,18,&C701903D)
  2958.     v*  
  2959. updateicon(rttyhdl%,7,&301013D)
  2960.     w-         
  2961. updateicon(rttyhdl%,8,&301013D)
  2962.     x/         
  2963. updateicon(rttyhdl%,12,&C701003D)
  2964.     y/         
  2965. updateicon(rttyhdl%,18,&C701003D)
  2966.     z/         
  2967.  "Wimp_GetCaretPosition",,block%
  2968.     {C         
  2969.  block%!0=rttyhdl% 
  2970.  "Wimp_SetCaretPosition",-1,-1
  2971.          shift%=1
  2972. out("[03]S")
  2973. seticontext(6,rttyhdl%,shift$(shift%))
  2974. updateicon(hdl%,icon%,flag%)
  2975. block%!0=hdl%
  2976. block%!4=icon%
  2977. block%!8=flag%
  2978. block%!12=&FFFFFFFF
  2979.  "Wimp_SetIconState",,block%
  2980. seticon(hdl%,icon%)
  2981. block%!0=hdl%
  2982. block%!4=icon%
  2983.  "Wimp_GetIconState",,block%
  2984. block%!8= 0+1<<21
  2985. block%!12=0+1<<21
  2986.  "Wimp_SetIconState",,block%
  2987. clearicon(hdl%,icon%)
  2988. block%!0=hdl%
  2989. block%!4=icon%
  2990.  "Wimp_GetIconState",,block%
  2991. block%!8= 0+0<<21
  2992. block%!12=0+1<<21
  2993.  "Wimp_SetIconState",,block%
  2994. swapicon(hdl%,icon%,name$)
  2995. block%!0=hdl%
  2996. block%!4=icon%
  2997.  "Wimp_GetIconState",,block%
  2998. $block%!32=name$
  2999. block%!8=0
  3000. block%!12=0
  3001.  "Wimp_SetIconState",,block%
  3002. rttymark
  3003. geticontext(7,rttyhdl%,mark$)
  3004. (3)+"X[13]")
  3005. out("mark "+mark$+"[13]")
  3006. out("r "+speed$(speed%)+"[13]")
  3007. rttyspace
  3008. geticontext(8,rttyhdl%,space$)
  3009. out("[03]x[13]")
  3010. out("space "+space$+"[13]")
  3011. out("r "+speed$(speed%)+"[13]")
  3012. amtorshift
  3013. amtorshift%+=1
  3014.  amtorshift% 
  3015. updateicon(amtorhdl%,6,&702F13D)
  3016. .         
  3017. updateicon(amtorhdl%,8,&702F13D)
  3018. /         
  3019. updateicon(amtorhdl%,7,&C701903D)
  3020. /         
  3021. updateicon(amtorhdl%,9,&C701903D)
  3022. updateicon(amtorhdl%,6,&301013D)
  3023. .         
  3024. updateicon(amtorhdl%,8,&301013D)
  3025. /         
  3026. updateicon(amtorhdl%,7,&C701003D)
  3027. /         
  3028. updateicon(amtorhdl%,9,&C701003D)
  3029. /         
  3030.  "Wimp_GetCaretPosition",,block%
  3031. D         
  3032.  block%!0=amtorhdl% 
  3033.  "Wimp_SetCaretPosition",-1,-1
  3034.          amtorshift%=1
  3035. out("[03]S")
  3036. seticontext(2,amtorhdl%,shift$(amtorshift%))
  3037. amtormark
  3038. geticontext(6,amtorhdl%,mark$)
  3039. out("[03]X[13]")
  3040. out("mark "+mark$+"[13]")
  3041. out("l [13]")
  3042. lamtor
  3043. amtorspace
  3044. geticontext(8,amtorhdl%,space$)
  3045. out("[03]X[13]")
  3046. out("space "+space$+"[13]")
  3047. out("l [13]")
  3048. lamtor
  3049. lamtor
  3050. clearicon(amtorhdl%,17)
  3051. clearicon(amtorhdl%,21)
  3052. seticon(amtorhdl%,19)
  3053. packet%=
  3054. maxpac%=72
  3055.  pactor%=
  3056.  rtty%=
  3057.  amtor%=
  3058. (3)+"X[13]")
  3059.  cw%=
  3060. geticontext(2,cwhdl%,getspeed$)
  3061.  getspeed$<>"*" 
  3062. out("cw 25[13]")
  3063. $    
  3064. seticontext(2,cwhdl%,
  3065. (25))
  3066. <    
  3067. out("cw "+getspeed$[13]"):REM check quotes/brackets
  3068. (    
  3069. seticontext(2,cwhdl%,getspeed$)
  3070.   cw%=
  3071. block%!0=cwhdl%
  3072.  "Wimp_GetWindowState",,block%
  3073.  "Wimp_OpenWindow",,block%
  3074. cwspeed(cwstep%)
  3075. cwspeed%=cwspeed%+cwstep%
  3076.  cwspeed%=10 
  3077.  cwspeed%=0
  3078.  cwspeed%=-1 
  3079.  cwspeed%=9
  3080. seticontext(2,cwhdl%,cwspeed$(cwspeed%))
  3081. out("[03]"+
  3082. (cwspeed%))
  3083. lock%=
  3084.  lock%
  3085.  lock% 
  3086. '    
  3087. seticontext(5,cwhdl%,"Unlock")
  3088. out("[03]l")
  3089. '    
  3090. seticontext(5,cwhdl%,"LockTX")
  3091. out("[03]u")
  3092. command
  3093. maxpac%=72
  3094. out("[03]x[13]")
  3095.  cw%=
  3096. closewindow(cwhdl%)
  3097.   cw%=
  3098.  rtty%=
  3099. closewindow(rttyhdl%)
  3100.   rtty%=
  3101.  pactor%=
  3102. closewindow(pactorhdl%)
  3103. clearicon(pactorhdl%,0)
  3104. seticontext(8,pactorhdl%,"Link")
  3105.   pactor%=
  3106.  amtor%=
  3107. closewindow(amtorhdl%)
  3108. clearicon(amtorhdl%,17)
  3109. clearicon(amtorhdl%,19)
  3110.   amtor%=
  3111. menu_setup(mb%,itemwidth%)
  3112. mb%?12=7
  3113. mb%?13=2
  3114. mb%?14=7
  3115. mb%?15=0
  3116. mb%!16=itemwidth%*16
  3117. mb%!20=40
  3118. mb%!24=0
  3119. create_menu(title$)
  3120. $mb1%=title$
  3121. flags%=mb1%+28
  3122. submenu%=flags%+4
  3123. menuicon%=flags%+8
  3124. menutext%=flags%+12
  3125. flags%!0=&00
  3126. submenu%!0=infohdl%
  3127. menuicon%!0=%110001+(7<<24)
  3128. $(menutext%)="Info"
  3129. flags%=mb1%+52
  3130. submenu%=flags%+4
  3131. menuicon%=flags%+8
  3132. menutext%=flags%+12
  3133. flags%!0=&00
  3134. submenu%!0=setuphdl%
  3135. menuicon%!0=%110001+(7<<24)
  3136. $(menutext%)="Setup"
  3137. flags%=mb1%+76
  3138. submenu%=flags%+4
  3139. menuicon%=flags%+8
  3140. menutext%=flags%+12
  3141. flags%!0=&00+ctextstick%
  3142. submenu%!0=mb6%
  3143. menuicon%!0=%110001+(7<<24)
  3144. $(menutext%)="Ctexts"
  3145. flags%=mb1%+100
  3146. submenu%=flags%+4
  3147. menuicon%=flags%+8
  3148. menutext%=flags%+12
  3149. flags%!0=&00
  3150. submenu%!0=mb7%
  3151. menuicon%!0=%110001+(7<<24)
  3152. $(menutext%)="Keys"
  3153. flags%=mb1%+124
  3154. submenu%=flags%+4
  3155. menuicon%=flags%+8
  3156. menutext%=flags%+12
  3157. flags%!0=&00
  3158. submenu%!0=mb3%
  3159. menuicon%!0=%110001+(7<<24)
  3160.  kam%=
  3161.  menuicon%!0+=shaded%
  3162. $(menutext%)="KAM"
  3163. flags%=mb1%+148
  3164. submenu%=flags%+4
  3165. menuicon%=flags%+8
  3166. menutext%=flags%+12
  3167. flags%!0=&00
  3168. submenu%!0=-1
  3169. menuicon%!0=%110001+(7<<24)
  3170. $(menutext%)="Clock"
  3171. flags%=mb1%+172
  3172. submenu%=flags%+4
  3173. menuicon%=flags%+8
  3174. menutext%=flags%+12
  3175. flags%!0=&00
  3176. submenu%!0=-1
  3177. menuicon%!0=%110001+(7<<24)
  3178. $(menutext%)="Stream"
  3179. flags%=mb1%+196
  3180. submenu%=flags%+4
  3181. menuicon%=flags%+8
  3182. menutext%=flags%+12
  3183. flags%!0=&80
  3184. submenu%!0=-1
  3185. menuicon%!0=%110001+(7<<24)
  3186. $(menutext%)="Quit"
  3187.  menu2
  3188. $mb2%="Fkeys"
  3189. flags%=mb2%+28
  3190. submenu%=flags%+4
  3191. menuicon%=flags%+8
  3192. menutext%=flags%+12
  3193. flags%!0=&00
  3194. submenu%!0=0
  3195. menuicon%!0=%110001+(7<<24)
  3196. $(menutext%)="Fkeys"
  3197. flags%=mb2%+52
  3198. submenu%=flags%+4
  3199. menuicon%=flags%+8
  3200. menutext%=flags%+12
  3201. flags%!0=&00
  3202. submenu%!0=0
  3203. menuicon%!0=%110001+(7<<24)
  3204. $(menutext%)="Shift"
  3205. flags%=mb2%+76
  3206. submenu%=flags%+4
  3207. menuicon%=flags%+8
  3208. menutext%=flags%+12
  3209. flags%!0=&00
  3210. submenu%!0=0
  3211. menuicon%!0=%110001+(7<<24)
  3212. $(menutext%)="Ctrl"
  3213. flags%=mb2%+100
  3214. submenu%=flags%+4
  3215. menuicon%=flags%+8
  3216. menutext%=flags%+12
  3217. flags%!0=&80
  3218. submenu%!0=0
  3219. menuicon%!0=%110001+(7<<24)
  3220. $(menutext%)="C/Shft"
  3221.  menu3
  3222. $mb3%="KAM"
  3223. flags%=mb3%+28
  3224. submenu%=flags%+4
  3225. menuicon%=flags%+8
  3226. menutext%=flags%+12
  3227. flags%!0=&00
  3228. submenu%!0=-1
  3229. menuicon%!0=%110001+(7<<24)
  3230. $(menutext%)="Pactor"
  3231. flags%=mb3%+52
  3232. submenu%=flags%+4
  3233. menuicon%=flags%+8
  3234. menutext%=flags%+12
  3235. flags%!0=&00
  3236. submenu%!0=-1
  3237. menuicon%!0=%110001+(7<<24)
  3238. $(menutext%)="Amtor"
  3239. flags%=mb3%+76
  3240. submenu%=flags%+4
  3241. menuicon%=flags%+8
  3242. menutext%=flags%+12
  3243. flags%!0=&00
  3244. submenu%!0=-1
  3245. menuicon%!0=%110001+(7<<24)
  3246. $(menutext%)="Rtty"
  3247. flags%=mb3%+100
  3248. submenu%=flags%+4
  3249. menuicon%=flags%+8
  3250. menutext%=flags%+12
  3251. flags%!0=&00
  3252. submenu%!0=-1
  3253. menuicon%!0=%110001+(7<<24)
  3254. $(menutext%)="CW"
  3255. flags%=mb3%+124
  3256. submenu%=flags%+4
  3257. menuicon%=flags%+8
  3258. menutext%=flags%+12
  3259. flags%!0=&80
  3260. submenu%!0=-1
  3261. menuicon%!0=%110001+(7<<24)
  3262. $(menutext%)="Packet"
  3263.  menu6
  3264. $mb6%="Ctexts"
  3265. flags%=mb6%+28
  3266. submenu%=flags%+4
  3267. menuicon%=flags%+8
  3268. menutext%=flags%+12
  3269. flags%!0=&80
  3270. submenu%!0=-1
  3271. menuicon%!0=%110001+(7<<24)
  3272. $(menutext%)="Show"
  3273.  menu7
  3274. $mb7%="Keys"
  3275. flags%=mb7%+28
  3276. submenu%=flags%+4
  3277. menuicon%=flags%+8
  3278. menutext%=flags%+12
  3279. flags%!0=&00
  3280. submenu%!0=mb2%
  3281. menuicon%!0=%110001+(7<<24)
  3282. $(menutext%)="F keys"
  3283. flags%=mb7%+52
  3284. submenu%=flags%+4
  3285. menuicon%=flags%+8
  3286. menutext%=flags%+12
  3287. flags%!0=&80
  3288. submenu%!0=-1
  3289. menuicon%!0=%110001+(7<<24)
  3290. $(menutext%)="W keys"
  3291. create2menu(title$)
  3292.  submenu1
  3293. $mb4%=title$
  3294. flags%=mb4%+28
  3295. submenu%=flags%+4
  3296. menuicon%=flags%+8
  3297. menutext%=flags%+12
  3298. flags%!0=&00
  3299. submenu%!0=-1
  3300. menuicon%!0=%110001+(7<<24)
  3301. $(menutext%)="Update"
  3302. flags%=mb4%+52
  3303. submenu%=flags%+4
  3304. menuicon%=flags%+8
  3305. menutext%=flags%+12
  3306. flags%!0=&80
  3307. submenu%!0=-1
  3308. menuicon%!0=%110001+(7<<24)
  3309. $(menutext%)="Save"
  3310. create3menu(title$)
  3311.  submenu1
  3312. $mb5%=title$
  3313. flags%=mb5%+28
  3314. submenu%=flags%+4
  3315. menuicon%=flags%+8
  3316. menutext%=flags%+12
  3317. flags%!0=&00
  3318. submenu%!0=-1
  3319. menuicon%!0=%110001+(7<<24)
  3320. $(menutext%)="Open"
  3321. flags%=mb5%+52
  3322. submenu%=flags%+4
  3323. menuicon%=flags%+8
  3324. menutext%=flags%+12
  3325. flags%!0=&80
  3326. submenu%!0=-1
  3327. menuicon%!0=%110001+(7<<24)
  3328. $(menutext%)="Update"
  3329. create4menu(title$)
  3330.  submenu1
  3331. $mb6%=title$
  3332. flags%=mb6%+28
  3333. submenu%=flags%+4
  3334. menuicon%=flags%+8
  3335. menutext%=flags%+12
  3336. flags%!0=&00+spooltick%
  3337. submenu%!0=savehdl%
  3338. menuicon%!0=%110001+(7<<24)
  3339. $(menutext%)="Spool"
  3340. flags%=mb6%+52
  3341. submenu%=flags%+4
  3342. menuicon%=flags%+8
  3343. menutext%=flags%+12
  3344. flags%!0=&80
  3345. submenu%!0=-1
  3346. menuicon%!0=%110001+(7<<24)
  3347. $(menutext%)="YappRx"
  3348. menu_action(block%)
  3349. level0%=block%!0
  3350. level1%=block%!4
  3351. level2%=block%!8
  3352.  "Wimp_GetPointerInfo",,block%
  3353. mouse%=block%!8
  3354.  menu% 
  3355.  level0% 
  3356.       
  3357.  setup
  3358.       
  3359. ^;        
  3360.  ctextstick%=1 
  3361.  ctextstick%=0 
  3362.  ctextstick%=1
  3363.         
  3364.  level1% 
  3365.           
  3366. a#            block%!0=ctextshdl%
  3367. b0            
  3368.  "Wimp_GetWindowState",,block%
  3369.             block%!28=-1
  3370. d,            
  3371.  "Wimp_OpenWindow",,block%
  3372. e?            
  3373.  ctextstick%=1 
  3374.  ctextstick%=0 
  3375.  ctextstick%=1
  3376.         
  3377.       
  3378.         
  3379.  level1% 
  3380. i!          
  3381. fkeys(level2%)
  3382.           
  3383.              
  3384. wkeys
  3385.              
  3386.  level2% 
  3387.                
  3388. n#               
  3389. updatewkeys
  3390. o!               
  3391. savewkeys
  3392.              
  3393.         
  3394.       
  3395. s"        
  3396.  packet%=
  3397. command
  3398.         
  3399.  level1% 
  3400.           
  3401. pactor
  3402.           
  3403. amtor
  3404.           
  3405.           
  3406.           
  3407.  4:packet%=
  3408.         
  3409. {&      
  3410.  clock%=
  3411. setupclock
  3412. |!      
  3413.  6:block%!0=streamhdl%
  3414. },        
  3415.  "Wimp_GetWindowState",,block%
  3416.         block%!28=-1
  3417. (        
  3418.  "Wimp_OpenWindow",,block%
  3419.       
  3420.  7:quit%=
  3421.         
  3422.  mouse%=1 
  3423.       
  3424. create_menu("tnc")
  3425.       menu%=1
  3426. 4      
  3427.  "Wimp_CreateMenu",,mb1%,mousex%-100,372
  3428.         
  3429.  level0% 
  3430.       
  3431. updatekeys
  3432.       
  3433. savefkeys
  3434.         
  3435.  mouse%=1 
  3436.       
  3437. create2menu("Fkeys")
  3438.       menu%=2
  3439. 8      
  3440.  "Wimp_CreateMenu",,mb4%,mousex%-100,mousey%
  3441.         
  3442.  level0% 
  3443. 2      
  3444.  "Filer_OpenDir <tnc$DIR>.WimpKeys"
  3445.       
  3446. getwkeys:
  3447. wkeys
  3448.         
  3449.  mouse%=1 
  3450.       
  3451. create3menu("Wkeys")
  3452.       menu%=3
  3453. 4      
  3454.  "Wimp_CreateMenu",,mb5%,mousex%,mousey%
  3455.         
  3456.  level0% 
  3457.       
  3458. updatectexts
  3459.       
  3460. savectexts
  3461.         
  3462.  mouse%=1 
  3463.        
  3464. create2menu("Ctexts")
  3465.       menu%=4
  3466. 4      
  3467.  "Wimp_CreateMenu",,mb4%,mousex%,mousey%
  3468.         
  3469.  level0% 
  3470.       
  3471. quickspool
  3472.       
  3473.         block%!0=yapphdl%
  3474. ,        
  3475.  "Wimp_GetWindowState",,block%
  3476. (        
  3477.  "Wimp_OpenWindow",,block%
  3478.         yapp%=
  3479.         state$="R"
  3480. *        
  3481. out("[03]trans[13]"):
  3482.  direct
  3483.         
  3484. sayerror(message$)
  3485. block%!0=errhdl%
  3486.  "Wimp_GetWindowState",,block%
  3487. block%!28=-1
  3488.  "Wimp_OpenWindow",,block%
  3489. seticontext(0,errhdl%,
  3490. seticontext(1,errhdl%,
  3491. seticontext(2,errhdl%,message$)
  3492. error
  3493.  "Wimp_CommandWindow",99
  3494. $;" at line ";
  3495. wimperror
  3496. !block%=
  3497. =222 
  3498. =248 
  3499. >&FFFF 
  3500. <&20000) 
  3501.   block%!0=filerrhdl%
  3502.  "Wimp_GetWindowState",,block%
  3503.   block%!28=-1
  3504.  "Wimp_OpenWindow",,block%
  3505. seticontext(0,filerrhdl%,
  3506. =222 
  3507. twiddletick 
  3508. closefiles
  3509. closewindow(uploadhdl%)
  3510. closewindow(savehdl%)
  3511. 0  mask%=(1<<0)+(1<<4)+(1<<5)+(1<<11)+(1<<12)
  3512.   errwindow%=
  3513. sayerror(
  3514. closefiles
  3515.  spool%=
  3516. #spy%:spool%=
  3517.  upload%=
  3518. #ascii%:upload%=
  3519.  yapp%=
  3520. #yapp%:yapp%=
  3521.  yappup%=
  3522. #ydata%:yappup%=
  3523. close
  3524.  pactor%=
  3525.  rtty%=
  3526.  amtor%=
  3527.  cw%=
  3528. command
  3529. closefiles
  3530. $block%="TASK"
  3531.  "XWimp_CloseTemplate"
  3532.  "Wimp_CloseDown",task%,!block%
  3533.